В чём разница между null и blank в моделях django

Опубликовано 2021.08.10

В полях моделей django часто встречаются такие свойства как null и blank. В чём же разница между null и blank?

Если установить null = True - то в ячейке таблицы БД значение поля будет равно null(если вы не передадите значение поля в модели).

Свойство blank отвечает за обязательность заполнения поля в админке. То есть если указать blank = True - поле будет необязательным к заполнению. Если указать blank = False - такое поле обязательно нужно будет заполнить.

Подведём итог:

Поле можно не заполнять, в БД будет null:
  1. class MyModel(models.Model):
  2. duration = models.IntegerField(
  3. verbose_name="дни",
  4. null=True,
  5. blank=True
  6. )

Поле обязательно нужно заполнить, в БД обязательно должно быть записано значение:

  1. class MyModel(models.Model):
  2. duration = models.IntegerField(
  3. verbose_name="дни",
  4. null=False,
  5. blank=True
  6. )

Важный момент.

Поля типов CharFields и TextFields не могут быть null. В БД они хранятся как пустые строки.

Вы можете указать в модели для поля типа CharFields null=True. Это не вызовет ошибки при создании миграции, но может вызвать ошибку где-нибудь в другом месте, например в swagger.