一对一与两个模型的一对一关系

时间:2018-05-17 08:51:45

标签: django django-models

我有三个关系UserFilmRating

现在,我已经完成了我的模型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')

是否有更好的方法来强制执行上述的单一性?

我觉得这只是一种执行可能通过关系完成的事情的懒惰方式。

2 个答案:

答案 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