我有三个关系User
,Film
和Rating
。
现在,我已经完成了我的模型Rating
:
class Rating(models.Model):
...
user = models.ForeignKey('User', on_delete=models.CASCADE)
film = models.ForeignKey('Film', on_delete=models.CASCADE)
...
然而,在这里,用户可以对同一部电影有几个等级,我希望用户只能对电影评价一次。所以我在前面的代码之后添加了这个:
class Meta:
unique_together = ('user', 'film')
是否有更好的方法来强制执行上述的单一性?
我觉得这只是一种执行可能通过关系完成的事情的懒惰方式。
答案 0 :(得分:0)
这似乎不是this is the way。
它在Django管理员中使用,并在数据库级别强制执行 (即,CREATE中包含适当的UNIQUE语句 TABLE声明)。
答案 1 :(得分:0)
你走在正确的轨道上。
但是,您应该使用正确的嵌套元组语法,即
class Meta:
unique_together = ((user, film), )
而不是:
class Meta:
unique_together = ('user', 'film')
请参阅Django Docs。