📜  unique=True – Django 内置字段验证(1)

📅  最后修改于: 2023-12-03 15:35:28.575000             🧑  作者: Mango

Unique=True - Django 内置字段验证

在 Django 中,Unique=True 是一个常用的内置字段验证方式。它用来保证在定义的字段中,每个值都是唯一的。在本文中,我们将会介绍这个验证方式的用途和如何在 Django 项目中使用它。

Unique=True 的用途

Unique=True 的目的是确保一个表中的某些字段内容是唯一的。这些字段具有唯一性,并且数据库会拒绝在这些字段上插入重复的值。这样做可以避免数据库中出现同样的记录,以及保持数据的一致性和完整性。

举个例子:在一个用户信息表中,一个唯一的 Email 字段可以确保用户的邮箱地址不能同时被两个不同的账户使用。

如何使用 Unique=True

使用 Unique=True 只需要在 Django 模型中给对应的字段添加这个属性即可。举个例子:

from django.db import models

class UserProfile(models.Model):
    email = models.EmailField(unique=True)
    password = models.CharField(max_length=128)
    phone_number = models.CharField(max_length=20, blank=True)

    def __str__(self):
        return self.email

在上面的例子中,我们给 UserProfile 模型中的 email 字段添加了 unique=True 属性。这表示 email 字段中的值必须是唯一的,如果有两个用户使用了同样的邮箱地址,则插入数据库时会出现错误。

需要注意的是,如果在创建模型时没有指定 unique=True,那么你也可以在数据库迁移的过程中使用 unique_together 选项来添加验证规则,它可以让你在多个字段上添加唯一性验证。举个例子:

class MyModel(models.Model):
    field1 = models.IntegerField()
    field2 = models.CharField(max_length=50)
    field3 = models.DateTimeField()

    class Meta:
        unique_together = ('field1', 'field2')

在上面的例子中,我们使用了 unique_together,在 field1 和 field2 两个字段上添加了唯一性验证规则。这意味着如果有两个记录在 field1 和 field2 上的值都相同,那么这两个记录就会被认为是相同的,插入数据库时会出现错误。

总结

Unique=True 是 Django 中一个非常有用的内置字段验证方式。它可以确保数据库中表中的某个字段具有唯一性,以保证数据的一致性和完整性。在 Django 项目中使用它非常简单,只需要添加对应的属性即可。如果需要在多个字段上添加唯一性验证规则,可以使用 unique_together 选项来实现。