-
null=True -
blank=True -
default = 0
Какая разница? Когда вы используете что?
null=Trueblank=Truedefault = 0Какая разница? Когда вы используете что?
Непосредственно из ссылки на поле модели Django:
Field.nullЕсли
True, Django будет хранить пустые значения какNULLв базе данных. По умолчанию установлено значениеFalse.Обратите внимание, что пустые строковые значения всегда будут храниться как пустые строки, а не как
NULL. Используйтеnull=Trueтолько для нестроковых полей, таких как целые числа, логические значения и даты. Для обоих типов полей вам также нужно установитьblank=True, если вы хотите разрешить пустые значения в формах, поскольку параметрnullвлияет только на хранилище базы данных (см.blank).Избегайте использования
nullв строковых полях, таких какCharFieldиTextField, если у вас нет веских причин. Если строковое поле имеетnull=True, это означает, что у него есть два возможных значения для "без данных": NULL и пустая строка. В большинстве случаев избыточно иметь два возможных значения для "нет данных"; Соглашение Django - использовать пустую строку, а неNULL.
& # 32;
Field.blankЕсли
True, поле может быть пустым. По умолчанию установлено значениеFalse.Обратите внимание, что это отличается от
null.nullсвязан исключительно с базой данных, тогда какblankсвязан с проверкой. Если поле имеетblank=True, проверка на сайте администратора Djangos позволит ввести пустое значение. Если поле имеетblank=False, поле будет обязательным.
& # 32;
Field.defaultЗначение по умолчанию для поля. Это может быть значение или вызываемый объект. Если он вызывается, он будет вызываться каждый раз, когда создается новый объект.
От docs:
nullЕсли True, Django будет хранить пустой значения как NULL в базе данных. По умолчанию False.
blankЕсли True, поле разрешено быть пустым. По умолчанию False.
defaultЗначение по умолчанию для поле.
Вы можете использовать "default", чтобы установить значение, которое будет использоваться для соответствующего поля, если ваш код явно не установил его в значение.
Используйте "blank" для целей проверки формы - blank = True позволит установить поле в пустое значение
Используйте "null", если вы хотите сохранить пустое значение как "null" в БД. Тем не менее, он предпочел, однако, установить пустые значения в пустую строку или на 0, как это необходимо для данного поля.
Я знаю, что у вас уже есть свой ответ, однако до сегодняшнего дня трудно судить, ставить ли в поле значение null=True или blank=True или both. Лично я считаю, что предоставлять разработчикам так много вариантов - бесполезно и запутанно. Позвольте ручке нули или пробелы, как они хотят.
В терминах реализации:
Поле 'blank' соответствует всем формам. Указывает, требуется ли это значение в форме и выполняется соответствующая проверка формы. "True" допускает пустые значения.
Поле "null" соответствует уровню DB. Он будет установлен как NULL или NOT NULL в БД.
Следовательно, если оставить поле пустым в admin с пустым = истинным, NULL будет загружаться в БД. Теперь это может вызвать ошибку, если этот конкретный столбец в БД указан как NOT NULL.
Null: это связано с базой данных. Определяет, будет ли данный столбец базы данных принимать нулевые значения или нет.
Пробел: это связано с проверкой. Он будет использоваться во время проверки форм при вызове form.is_valid().
По умолчанию: All Time сохраняет в поле заданное значение (значение по умолчанию), если не указано никакого значения для этого поля.
Значения по умолчанию null и blank - False.
При этом совершенно нормально иметь поле с null = True и пустым = False. Значение на уровне базы данных может быть NULL, но на уровне приложения это обязательное поле.
Теперь, когда большинство разработчиков ошибаются: определение null = True для строковых полей, таких как CharField и TextField. Избегайте этого. В противном случае вы получите два возможных значения для "без данных": Нет и пустая строка. Наличие двух возможных значений "нет данных" является избыточным. Соглашение Django - использовать пустую строку, а не NULL.
Null = None
Blank = ""
Default = ""
Скорее всего, это миряне.
Бланк подразумевает, что он НЕ NULL и вместо этого имеет некоторое значение, которое представляет "пустое" для этого типа данных, которое в случае строки, вероятно, является пустой строкой. Для чисел это может быть 0.