UniqueConstraint 与 unique_together 之间的区别 - Django 2.2?

Har*_*han 5 django django-models django-queryset django-managers python-3.6

我使用 version 在 Django 中启动了新项目2.2,它具有新的约束唯一约束,这与unique_together相同还是有任何其他差异?

Mar*_*hyn 11

UniqueConstraint有用处condition

只是一个小例子。假设您只想检查活动产品的唯一性。

class Product(models.Model):
    is_active = models.BooleanField(default=False)
    category_name = models.CharField(max_length=64)
    name = models.CharField(max_length=64)

    class Meta:
        constraints = [
            models.UniqueConstraint(fields=['category_name', 'name'], 
                                    condition=models.Q(is_active=True),
                                    name='category_and_name_uniq')
        ]
Run Code Online (Sandbox Code Playgroud)


Naf*_*war 7

从文档中很明显

请改用带有约束选项的 UniqueConstraint。

UniqueConstraint 提供比 unique_together 更多的功能。unique_together 将来可能会被弃用。