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'
            )
        ]

非常感谢,非常有用!