В полях моделей django часто встречаются такие свойства как null и blank. В чём же разница между null и blank?
Если установить null = True - то в ячейке таблицы БД значение поля будет равно null(если вы не передадите значение поля в модели).
Свойство blank отвечает за обязательность заполнения поля в админке. То есть если указать blank = True - поле будет необязательным к заполнению. Если указать blank = False - такое поле обязательно нужно будет заполнить.
Подведём итог:
Поле можно не заполнять, в БД будет null:
class MyModel(models.Model): duration = models.IntegerField( verbose_name="дни", null=True, blank=True )
Поле обязательно нужно заполнить, в БД обязательно должно быть записано значение:
class MyModel(models.Model): duration = models.IntegerField( verbose_name="дни", null=False, blank=True )
Важный момент.
Поля типов CharFields и TextFields не могут быть null. В БД они хранятся как пустые строки.
Вы можете указать в модели для поля типа CharFields null=True. Это не вызовет ошибки при создании миграции, но может вызвать ошибку где-нибудь в другом месте, например в swagger.