В чем отличие Django models.py между default, null и blank? - PullRequest
47 голосов
/ 08 декабря 2010
  • null=True
  • blank=True
  • default = 0

В чем разница?Когда вы используете что?

Ответы [ 4 ]

47 голосов
/ 08 декабря 2010

Напрямую от Ссылка на поле модели Django :

Field.null

Если True, Django будет хранить пустые значения как NULL в базе данных. По умолчанию False.

Обратите внимание, что пустые строковые значения всегда будут храниться как пустые строки, а не как NULL. Используйте null=True только для нестроковых полей, таких как целые числа, логические значения и даты. Для обоих типов полей вам также необходимо установить blank=True, если вы хотите разрешить пустые значения в формах, поскольку параметр null влияет только на хранилище базы данных (см. blank).

Избегайте использования null в строковых полях, таких как CharField и TextField, если у вас нет веских причин. Если поле на основе строки имеет значение null=True, это означает, что оно имеет два возможных значения для «без данных»: NULL и пустая строка. В большинстве случаев избыточно иметь два возможных значения для «нет данных». Соглашение Django - использовать пустую строку, а не NULL.

Field.blank

Если True, поле может быть пустым. По умолчанию False.

Обратите внимание, что это отличается от null. null связан исключительно с базой данных, тогда как blank связан с проверкой. Если поле имеет blank=True, проверка на сайте администратора Django позволит ввести пустое значение. Если поле имеет blank=False, поле будет обязательным.

Field.default

Значение по умолчанию для поля. Это может быть значение или вызываемый объект. Если он вызывается, он будет вызываться каждый раз, когда создается новый объект.

Разве вы не понимаете всего этого?

15 голосов
/ 08 декабря 2010

Из документов :

null Если True, Django будет хранить пустой Значения как NULL в базе данных. По умолчанию установлено значение False.

blank Если True, поле может быть пустым По умолчанию установлено значение False.

default Значение по умолчанию для поле.

Вы можете использовать "default", чтобы установить значение, которое будет использоваться для рассматриваемого поля, если ваш код явно не установит его в значение.

Используйте «blank» для проверки формы - blank = True позволит пустому значению поля установить

Используйте «null», если вы хотите сохранить пустое значение как «ноль» в БД. Однако часто предпочтительно устанавливать пустые значения в пустую строку или в 0 в зависимости от заданного поля.

2 голосов
/ 07 сентября 2018

Я знаю, что у вас уже есть свой ответ, однако до сегодняшнего дня трудно судить, ставить ли null=True или blank=True или both на поле. Лично я считаю, что предоставлять разработчикам так много вариантов - бесполезно и запутанно. Позвольте ручке нули или пробелы, как они хотят.

Я следую этой таблице: When to use null and blank

When to use null and blank

1 голос
/ 29 января 2015

В терминах реализации:

Пустое поле соответствует всем формам.Указывает, требуется ли это значение в форме и выполняется ли соответствующая проверка формы.«True» допускает пустые значения.

Поле «null» соответствует уровню БД.Он будет установлен как NULL или NOT NULL в БД.

Следовательно, если оставить поле пустым в admin с пустым = true, NULL подается в БД.Теперь это может привести к ошибке, если этот конкретный столбец в БД указан как NOT NULL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...