Django - 一起为2个或更多字段创建唯一的数据库约束

时间:2010-05-21 09:48:00

标签: django django-models

假设,我想每天记录用户的民意调查。在这种情况下,我有一个名为vote的表,其中包含pollchoiceuser-id列。那么我怎样才能解决约束(可能在django模型中或在任何可能的情况下),polluser-id两者对于任何条目都不应该相同,但同样的用户可以投票支持各种不同的民意调查一次显然,不同的用户可以投票给同一个民意调查。我希望我很清楚。

4 个答案:

答案 0 :(得分:32)

您所寻找的模型unique_together类的Meta属性是:

class Meta:
    unique_together = ('poll', 'user_id')

查看django docs了解详情。

答案 1 :(得分:14)

unique_together可能就是您要找的。

答案 2 :(得分:1)

答案 3 :(得分:1)

Django 2.2引入了UniqueConstraintofficial documentation on this topic中的注释表明unique_together可能会在以后被弃用。

您可以将UniqueConstraint添加到模型类的Meta.constraints选项中,如下所示:

class Meta:
    constraints = [
        models.UniqueConstraint(fields=['poll', 'user_id'], name="user-polled")
        ]