📅  最后修改于: 2023-12-03 14:48:11.074000             🧑  作者: Mango
在 Django 中,unique_together
是一个元组,用于定义一个由多个字段组成的联合唯一键。这意味着在数据库表中,这些字段的组合必须唯一,不能重复,否则就会抛出唯一性错误。
unique_together
可以在模型的 Meta
中定义。例如:
class MyModel(models.Model):
field_1 = models.CharField(max_length=50)
field_2 = models.CharField(max_length=50)
field_3 = models.CharField(max_length=50)
class Meta:
unique_together = (('field_1', 'field_2'), ('field_1', 'field_3'))
调用 unique_together
时需要以元组的形式传递一个或多个元组。每个元组都表示一个联合唯一键,包含要联合在一起的字段。在这个例子中,我们定义了两个联合唯一键,其中第一个联合唯一键包含 field_1
和 field_2
字段,第二个联合唯一键包含 field_1
和 field_3
字段。
注意:在 Django 2.2 中,unique_together
被标记为废弃。建议使用 UniqueConstraint
替代,它提供了更多的灵活性和可读性。
以下是一个示例模型,它使用 unique_together
定义了一个联合唯一键:
class Customer(models.Model):
name = models.CharField(max_length=50)
email = models.EmailField()
phone_number = models.CharField(max_length=20, blank=True)
class Meta:
unique_together = ('name', 'email')
在这个例子中,我们定义了一个 Customer
模型,包含了 name
、email
和 phone_number
字段。我们要确保每个客户名字和邮箱的组合都是唯一的,所以我们使用了 unique_together
来定义这个联合唯一键。
这意味着如果在数据库中已经存在一个客户名为 'John',邮箱为 'john@smith.com',那么如果我们尝试添加另一个名为 'John',邮箱也为 'john@smith.com' 的客户,Django 将引发一个唯一性错误。
在 Django 中,unique_together
用于定义一个由多个字段组成的联合唯一键。它可以确保我们的数据库表中的某些字段组合不会重复出现。它是一个强大的工具,可以在开发 Web 应用程序时提供额外的数据完整性保障。