У меня мало приложений, которые позволяют пользователю оценивать видео.
Пользователь может оценивать только один раз. Поэтому я определил уникальность модели.
Но он должен быть в состоянии изменить свою ставку.
Таким образом, save()
должен обновлять дублированный ключ
class VideoRate(models.Model):
"""Users can Rate each Video on the criterias defined for the topic"""
user = models.ForeignKey(User)
video = models.ForeignKey(VideoFile)
crit = models.ForeignKey(VideoCrit)
rate = models.DecimalField(max_digits=2, decimal_places=1, choices=RATE_CHOICES)
class Meta:
unique_together = (('user', 'video', 'crit'),)
verbose_name = 'Video Rating'
Если I
rate = VideoRate(user_id=1, video_id=1, crit_id=1, rate=2)
rate.save()
Сохраняет рейтинг, но если я
rate = VideoRate(user_id=1, video_id=1, crit_id=1, rate=3)
rate.save()
Я получаю нормальную ошибку
IntegrityError: (1062, "Duplicate entry '1-1-1' for key 'user_id'")
Даже если я использую force_update=True
(поскольку он основан только на первичных ключах)
Есть ли способ обновить рейтинг, если он уже существует без проверки данных раньше?