Подтвердить что ты не робот

Пустой, нулевой и требуемый в моделях Django и ModelForms

До сих пор я не нашел четкого объяснения пустого, нулевого и обязательного - в моделях и формах 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)? Поскольку форма не связана с моделью (кроме как с помощью логики представления), что произойдет, если они снова будут противоречить друг другу?

4b9b3361

Ответ 1

Противоречия не имеют значения. Я думаю, что это привносит гибкость в разработку приложения Django. Например, если вы используете стороннюю библиотеку, которая определяет некоторые модели, и они устанавливают blank=True, но для других целей вам необходимо, чтобы это поле было обязательным, а затем в ваших формах вы можете исправить это, не касаясь кода сторонней библиотеки.

Это просто добавляет некоторую гибкость в рамки IMHO, что не приносит никакого вреда. Вы можете использовать его для своих целей. Противоречия несущественны.

Надеюсь, это поможет!

Ответ 2

Это зависит от требования. Иногда мы решаем позже сделать поле обязательным для формы, хотя на модели оно еще не требуется. Но форма будет гарантировать, что поле должно быть заполнено.

У вас может быть null=True на модели, а затем вы можете сделать это поле обязательным для формы. Но вы не можете сделать поле необязательным в форме, когда оно является обязательным для модели, что впоследствии приведет к ошибке базы данных.