Django UUIDFIeld unique=True、blank=True 和 null=True 的行为是否正确?

Mat*_*att 0 django django-models

我正在向数据库添加一个字段:

identifier = models.UUIDField(unique=True, null=True, blank=True)

但我很好奇,当有人在管理员中保存没有值的实例时,这是否会表现得像 CharField 或数字字段。它会尝试将值保存为空字符串""还是会聪明地将其保存为null?我使用 Postgres 作为数据库。我看过CharField 的其他答案,但没有任何与 UUIDField 相关的答案。

我的最终目标是拥有一个保证唯一的字段,并且默认为null. 写成这样会不会更合适:

identifier = models.UUIDField(unique=True, null=True, default=None)或者如果没有提供值,管理表单验证会抱怨吗?

Kev*_*nry 5

Django 文档没有具体说明如何UUIDField处理空值。

然而,查看源代码表明它不是CharField,并且它明确支持处理 null 值。

因此,该字段似乎确实会将None值存储为NULL,并且由于这些值在 PostgreSQL 上始终是唯一的,因此您的方法应该适用于该数据库。