Ответ 1
У них есть два совершенно разных значения:
blank: определяет, должно ли поле быть проверено по мере необходимости или нет в формах. False
означает, что форма будет генерировать ошибку, если не предоставить, тогда как True
означает, что допустимы пустые значения.
null: определяет, должно ли поле быть установлено как NULL
или NOT NULL
на уровне БД. Это не имеет никакого отношения к проверке формы.
Некоторые примеры:
blank=True, null=False
будет поднимать значение IntegrityError
в любое время, когда поле остается пустым, если это не CharField или TextField. Эти два поля отправляют ''
(пустая строка), а не NULL
в БД при пустом.
blank=False, null=True
всегда требовало заполнения поля во всех формах (формы будут поднимать ValidationError
в поле), даже если столбцу разрешено быть NULL
. Однако это относится только к формам. Вы можете вручную установить атрибут None
и сохранить его вне формы (например, в оболочке).