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

时间:2019-04-03 12:25:04

标签: django django-models django-queryset python-3.6 django-managers

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

2 个答案:

答案 0 :(得分:0)

docs

很明显
  

改为将UniqueConstraint与constraints选项一起使用。

     

UniqueConstraint提供的功能比unique_together还要多。   将来可能不推荐使用unique_together。

答案 1 :(得分:0)

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