【发布时间】:2011-09-16 23:45:18
【问题描述】:
我有一个小应用程序可以让用户给视频评分。
用户只能评分一次。 所以我已经定义了模型的唯一性。
但他应该能够改变他的汇率。
所以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(因为仅基于主键)
如果评级已经存在,有没有办法更新评级而无需之前检查数据?
【问题讨论】:
标签: django save unique-constraint insert-update