Django:“ primary_key = True”是否也表示“唯一”?

bla*_*sun 2 authentication django django-models django-forms django-views

您好,我正在测试Django身份验证和嵌套用户数据。我MyProfil为用户创建了一个简单的模型。我想测试制作自定义id并将设置primary_key=Trueid = models.UUIDField

models.py

 class MyProfil(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid4, editable=False)
    owner = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    aboutme = models.TextField(max_length=300, blank=True)
    city = models.TextField(max_length=300, blank=True)
Run Code Online (Sandbox Code Playgroud)

到目前为止,一切都对我有利,但我有一个问题,即使阅读django文档也无法回答自己。

请问primary_key=True我的id场均也unique还是必须要申报吗?

Wil*_*sem 5

是的。由于主键表示可以唯一标识对象的值。在参数的文档中primary_key,我们看到:

Field.primary_key

如果为True,则此字段是模型的主键。

如果您未primary_key=True在模型中指定任何字段,则Django会自动添加一个AutoField来保留主键,因此primary_key=True除非您要覆盖默认的主键行为,否则无需在任何字段上进行设置。有关更多信息,请参见自动主键字段。

primary_key=True暗示null=Falseunique=True。一个对象只允许使用一个主键。