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

Posted

技术标签:

【中文标题】UniqueConstraint 与 unique_together 之间的区别 - Django 2.2?【英文标题】:Difference between UniqueConstraint vs unique_together - Django 2.2? 【发布时间】:2019-08-24 23:34:38 【问题描述】:

我在 Django 中使用版本2.2 启动了新项目,它有新的约束unique constraint,这与unique_together 相同还是有其他区别?

【问题讨论】:

docs.djangoproject.com/en/2.2/ref/models/options/… @DanielRoseman 明白了,谢谢,当我搜索 unique_together 时,我忘了在 url 中提及 2.2 版。 【参考方案1】:

从docs来看很明显

将 UniqueConstraint 与约束选项一起使用。

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

【讨论】:

当我搜索 unique_together 时,我忘了在 url 中提及 2.2 版。谢谢。【参考方案2】:

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

【讨论】:

以上是关于UniqueConstraint 与 unique_together 之间的区别 - Django 2.2?的主要内容,如果未能解决你的问题,请参考以下文章

Symfony UniqueEntity vs UniqueConstraint vs unique=true

Doctrine 可以处理多列 UNIQUE 索引吗?

ORA-00001:unique constraint violated解决

如何在 django 中使用 Uniqueconstraints 函数创建 unique_together 索引?

Oracle之唯一性约束(UNIQUE Constraint)使用方法具体解释

Flask 学习-83.Flask-SQLAlchemy 联合唯一约束