До сих пор я не нашел четкого объяснения пустого, нулевого и обязательного - в моделях и формах Django.
Я знаю, что по умолчанию для каждого из них следующее:
blank = False
null = False
required = True
Я также знаю, что:
blank=True
(используется в models.py), означает на уровне формы принимать пустые формы - связанное поле не требуется в форме.
null=True
(используется в models.py), означает, что на уровне базы данных значения Python None
могут быть сохранены в модели и сохранены (а затем завершены как значения SQL NULL
в базе данных).
required=False
(используется в forms.py), означает, что связанное поле формы не является обязательным.
Надеемся, что приведенная выше информация будет полезна другим (пожалуйста, дайте мне знать, если есть какие-либо недостатки в логике, и я обновлю ее).
Мой вопрос заключается в следующем:
Когда я знаю, когда использовать blank=True
против required=False
. Если моя цель состоит в том, чтобы сделать поле формы необязательным, я мог бы определить это в модели, используя blank=True
, или я мог бы определить это в форме, используя required=False
. Означает ли это, что вы можете определить blank=True
в модели, а в связанной ModelForm
переопределить это с помощью required=True
?
Также связано, что, когда вы используете обычную форму (forms.Form
)? Поскольку форма не связана с моделью (кроме как с помощью логики представления), что произойдет, если они снова будут противоречить друг другу?