Будет ли Django UUIDFIeld unique = True, blank = True и null = True вести себя правильно? - PullRequest
0 голосов
/ 29 мая 2020

Я добавляю поле в базу данных:

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

, но мне любопытно, будет ли это вести себя как CharField или числовое поле, когда кто-то сохраняет экземпляр в админке без значения. Будет ли он пытаться сохранить значение как пустую строку "" или будет умным и сохранит его как null? Я использую Postgres для базы данных. Я видел другие ответы для CharField , но ничего, что говорило бы с UUIDField.

Моя конечная цель - создать поле, которое гарантированно будет уникальным и по умолчанию будет null. Было бы более подходящим записать его как:

identifier = models.UUIDField(unique=True, null=True, default=None), или администраторская форма будет выдавать жалобы, если значение не указано?

1 Ответ

1 голос
/ 30 мая 2020

В документации Django не указано, как UUIDField обрабатывает нулевые значения.

Однако взгляд на исходный код показывает, что это не подмножество CharField, и что у него есть явная поддержка обработки нулевых значений.

Таким образом, похоже, что поле действительно будет хранить None значения как NULL, и поскольку такие значения всегда уникальны на PostgreSQL ваш подход должен работать с этой базой данных.

...