Django - обновление save () при дублировании ключа

У меня есть небольшое приложение, которое позволяет пользователю оценивать видео.

Пользователь может оценивать только один раз. Итак, я определил уникальность модели.

Но он должен иметь возможность изменять свою скорость. Таким образом, 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'

Если я

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 (поскольку на основе только первичных ключей)

Есть ли способ обновить рейтинг, если он уже существует, без предварительной проверки данных?

21
задан Pierre de LESPINAY 17 June 2011 в 07:44
поделиться