Django模型中每个外键的唯一字段
我正在定义一组相互引用的模型。它们是文档应用程序的模型,如下所示Django模型中每个外键的唯一字段,django,django-models,Django,Django Models,我正在定义一组相互引用的模型。它们是文档应用程序的模型,如下所示 class Document(models.Model): text = models.TextField() class Chapter(models.Model): doc = models.ForeignKey('Document') chapter = models.IntegerField() 我希望每个文档的整数字段都是唯一的,但不确定如何做到这一点。我知道每个字段都有一个唯一的参数,但它似
class Document(models.Model):
text = models.TextField()
class Chapter(models.Model):
doc = models.ForeignKey('Document')
chapter = models.IntegerField()
我希望每个文档的整数字段都是唯一的,但不确定如何做到这一点。我知道每个字段都有一个唯一的参数,但它似乎对整个表都是唯一的,这不是我想要的。您可以在您的模型中一起使用unique is meta:
class Chapter(models.Model):
doc = models.ForeignKey('Document')
chapter = models.IntegerField()
class Meta:
unique_together = (("doc", "chapter"),)
这是我的建议
(Django 3.1)编辑:文档现在不鼓励同时使用unique_,根据。改用UniqueConstraint:
class Chapter(models.Model):
doc = models.ForeignKey('Document')
chapter = models.IntegerField()
class Meta:
constraints = [
models.UniqueConstraint(
fields=['doc', 'chapter'],
name='unique chapter'
)
]
非常感谢,非常有用!