假设,我想每天记录用户的民意调查。在这种情况下,我有一个名为vote
的表,其中包含poll
,choice
和user-id
列。那么我怎样才能解决约束(可能在django模型中或在任何可能的情况下),poll
和user-id
两者对于任何条目都不应该相同,但同样的用户可以投票支持各种不同的民意调查一次显然,不同的用户可以投票给同一个民意调查。我希望我很清楚。
答案 0 :(得分:32)
您所寻找的模型unique_together
类的Meta
属性是:
class Meta:
unique_together = ('poll', 'user_id')
查看django docs了解详情。
答案 1 :(得分:14)
unique_together可能就是您要找的。 p>
答案 2 :(得分:1)
您想要unique_together
属性:
https://docs.djangoproject.com/en/dev/ref/models/options/#unique-together
答案 3 :(得分:1)
Django 2.2引入了UniqueConstraint
,official documentation on this topic中的注释表明unique_together
可能会在以后被弃用。
您可以将UniqueConstraint
添加到模型类的Meta.constraints
选项中,如下所示:
class Meta:
constraints = [
models.UniqueConstraint(fields=['poll', 'user_id'], name="user-polled")
]