我有一个Table
模型,它与Restaurant
模型是多对一的。是否有一种方法可以在reference_label
模型中拥有一个字段Table
,该字段必须每个餐厅是唯一的,但不能在不同的餐厅之间?
简而言之,我想对具有相同外键的表强制执行reference_label
唯一性。
我知道我可以只使用Table
的{{1}},但是我希望每家餐厅都能够自定义他们如何标记餐桌。
答案 0 :(得分:2)
如果您使用的是Django 2.2,则可以使用UniqueConstraint
代替unique_together
,如下所示:
class Meta:
constraints = [
models.UniqueConstraint(fields=['restaurant', 'reference_label'], name='give_it_some_name')
]
作为docs状态:
改为将UniqueConstraint与constraints选项一起使用。
UniqueConstraint提供的功能比unique_together还要多。将来可能不推荐使用unique_together。
答案 1 :(得分:1)
您可以使用unique_together
:
class Restaurant(models.Model):
...
class Table(models.Model):
restaurant = models.ForeignKey(Restaurant, on_delete=models.CASCADE)
reference_label = models.CharField(max_length=20)
...
class Meta:
unique_together = ['restaurant', 'reference_label']