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

Django-为两个或多个字段一起创建唯一的数据库约束,django,django-models,Django,Django Models,假设,我想记录用户每天的民意测验选择。在本例中,我有一个名为vote的表,其中包含poll、choice和user id列。因此,我如何才能排除限制(可能在django模型中,或在任何可能的情况下),poll和user id对于任何条目都不应该相同,但就像同一个用户可以对不同的民意调查进行一次投票一样,显然不同的用户可以对相同的民意调查进行投票一样。我希望我明白了 模型的Meta类的unique\u together属性就是您要寻找的: class Meta: unique_togeth

假设,我想记录用户每天的民意测验选择。在本例中,我有一个名为
vote
的表,其中包含
poll
choice
user id
列。因此,我如何才能排除限制(可能在django模型中,或在任何可能的情况下),
poll
user id
对于任何条目都不应该相同,但就像同一个用户可以对不同的民意调查进行一次投票一样,显然不同的用户可以对相同的民意调查进行投票一样。我希望我明白了

模型的
Meta
类的
unique\u together
属性就是您要寻找的:

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

查看更多信息。

可能就是您要查找的。

您希望将
唯一属性组合在一起
属性:

Django 2.2引入了
UniqueConstraint
,中的注释表明
unique\u合在一起
将来可能会被弃用。参见弃用说明

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

类元:
约束=[
models.UniqueConstraint(字段=['poll','user\u id'],name=“user polled”)
]

你需要在两个紧括号之间加一个逗号,我想
unique_together=(('poll','user_id'),)
。实际上不需要这个逗号:据我所知,如果你在某些方面不满意,你可以建议对这个答案进行编辑。假设你建议的编辑不是废话,你会为这个世界做出积极的贡献,那么你就会被接受。在答案仍然正确的情况下,对3年前的答案进行否决似乎有点不必要,但我想这是你的特权。你必须同意,只有一句带有链接的答案,而这个链接已断开,这不是一个真正好的答案,是吗?:)相反,有一个被上浮的是接受的,链接是正确的。这就是为什么一个我重视另一个我不重视的原因。我认为,可能的Django旧版本(如2.0.6)的副本不受支持。或者有解决办法吗?正如其他答案所建议的那样,这里有
unique\u。顺便说一句,Django 2.0已不受支持,如果您可以更新它,请执行此操作!为什么文档中没有显示
uniqueTogether
的用法?我来到这里发现我必须把它放在一个名为
constraints
的列表中,在model@RobertJohnstone我想这只是Django文档的一个怪癖。我也必须参考其他资源来了解一些组件的用法。