我正在使用现有数据库启动项目。从inspectdb
生成的模型具有
(...null=True, blank=True)
在各个领域。该文档提到blank
参数与Django表单有关。我正在使用 django rest框架和django ORM创建一个Web服务项目。绝对没有MVC的 view 组件(自动生成的表单,html模板等)。
这是否意味着从模型中删除blank=True
是安全的?
答案 0 :(得分:2)
如果没有blank=True
,则尝试使用空白字段序列化数据时,您的应用程序将无法通过验证。 Django rest框架ModelSerializer
强制执行模型字段上的任何类型的验证。它的工作方式与Django ModelForms
类似。
如果您不使用ModelSerializers
,并尝试在没有blank=True
的字段上保存空白值,则save方法将引发异常。
TL; DR:如果删除blank=True
,则DRF序列化程序将无法通过空白字段进行验证。
看看this有关验证在DRF中如何工作的问题。
希望这会有所帮助!
答案 1 :(得分:1)
答案 2 :(得分:1)
Django Rest Framework将在序列化程序验证中的模型字段上使用blank
属性。当blank
为False
(默认值)时,如果未在POST请求中为此字段设置值,则ModelSerializer将引发ValidationError。
基本上,如果您从某个字段中删除blank=True
并尝试创建对该字段没有任何值的记录,则服务器会收到400条响应。
一切都不会中断,仅此请求将无法创建资源。在我的书中,我会称其为保险箱。这实际上取决于您是否需要该字段。但是由于您拥有null=True
,因此拥有blank=True
似乎是合理的。