Django模型和ModelForms中的空白,空和必需

时间:2013-06-19 18:51:07

标签: django django-models django-forms

到目前为止,我还没有在Django的模型和表单中找到关于blank,null和required的明确解释。


我知道每个的默认值如下:

blank = False
null = False
required = True

我也知道:

blank=True(在models.py中使用),表示在表单级别,接受空表单 - 表单中不需要关联字段。

null=True(在models.py中使用),意味着在数据库级别上,Python None值可以存储在模型中并保存(然后最终为SQL NULL数据库中的值。)

required=False(在forms.py中使用)表示不需要关联的表单字段。


希望上述信息能够很好地为他人服务(如果逻辑中存在任何缺陷,请告诉我,我会更新)。

我的问题如下:

我何时知道何时使用blank=Truerequired=False。如果我的目标是创建一个不需要的表单字段,我可以使用blank=True在模型中定义它,或者我可以使用required=False在表单中定义它。这是否意味着您可以在模型中定义blank=True,并在关联的ModelForm中使用required=True覆盖此内容?

还相关,当你使用常规表单(forms.Form)时呢?由于表单与模型没有关联(除了通过视图逻辑),如果再次发生,它们会相互矛盾?

2 个答案:

答案 0 :(得分:9)

矛盾并不重要。我认为这为Django应用程序的开发带来了灵活性。例如,如果您使用的是定义某些模型的第三方库,并且它们设置了blank=True,但出于其他目的,您需要该字段是必填字段,然后在您的表单中,您可以在不触及第三方的情况下修复它图书馆代码。

这只是为框架恕我直言增加了一些灵活性,这没有带来任何伤害。您可以将它用于您自己的目的。矛盾并不重要。

希望这有帮助!

答案 1 :(得分:2)

这取决于要求。有时我们决定在表单上强制字段,尽管在模型上仍然不需要。但是表单将确保必须填写字段。

您可以在模型上使用null=True,然后您可以在表单上强制使用该字段。但是,如果在模型上强制要求以后会导致数据库错误,则无法在表单中创建字段。