15

我正在定义一组模型,它们相互引用。它们是文档应用程序的模型,如下所示

class Document(models.Model):
    text = models.TextField()

class Chapter(models.Model):
    doc = models.ForeignKey('Document')
    chapter = models.IntegerField()

我希望整数字段在每个文档中都是唯一的,但不知道该怎么做。我知道每个字段都有一个唯一的参数,但它似乎对整个表来说都是唯一的,这不是我想要的。

4

1 回答 1

30

您可以在模型中一起使用 unique 是 meta:

class Chapter(models.Model):
    doc = models.ForeignKey('Document')
    chapter = models.IntegerField()

    class Meta:
        unique_together = (("doc", "chapter"),)  

这是文档

(Django 3.1)编辑:文档现在不鼓励使用 unique_together ,并且根据文档,将来可能会弃用。改用 UniqueConstraint:

class Chapter(models.Model):
    doc = models.ForeignKey('Document')
    chapter = models.IntegerField()

    class Meta:
        constraints = [
            models.UniqueConstraint(
                fields=['doc', 'chapter'], 
                name='unique chapter'
            )
        ]
于 2013-05-20T16:53:23.490 回答