在 Django 中,UniqueConstraint 是指在数据库中对于一个表的一组列中所有的值都不相同的限制。
例如,如果有一个名叫 Person 的模型,其中包含字段 first_name 和 last_name,需要确保两个人的 first_name 和 last_name 组合不能完全相同。这时可以使用 UniqueConstraint 来实现该限制:
from django.db import models
class Person(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)
class Meta:
constraints = [
models.UniqueConstraint(fields=['first_name', 'last_name'], name='unique_name')
在以上示例中,先定义了一个名为 unique_name
的唯一约束,然后通过在模型的 Meta 类中添加 constraints
属性来将其应用于 Person 模型。
需要注意的是,UniqueConstraint 与 unique=True 略有不同。唯一约束可以包含多个列,并且可以定义一个名称。除此之外,唯一约束可以用于 ForeignKey,而 unique=True 只能用于单个列和 CharField,BooleanField 和 DateField 上。