Django与Django REST Framework中的这些"空"
0X00 Django Model中的空
Django的Model常见两个与空有关的参数:null
和blank
。其中null
是数据库层面的是否允许为Null,而blank
则将空处理为空值。比如一个CharField
的blank=True
,那么这个字段在没有赋值的情况下入库,这个字段就会是空字符串而不是Null。
1 | In [13]: s = Student() |
如果将blank=False
再不赋值该字段进行保存则入库的就是Null
。
1 | In [3]: s = Student() |
所以换句话说,null=True
是数据库层面允许存储Null,而blank=True
则是允许存入”空字符串”等表示空的值。
0X01 Django REST framework中的空
在Django REST framework的serializer中的字段,有三个与空有关的,都是在创建或更新中生效。分别是allow_blank/allow_null/require
这三个。其中allow_blank=True
表示着CharField/ListField
等允许传入""/[]
等空值;allow_null=True
表示着允许传入{"name": null, "age": null}
这种null
空;require=True
则表示着字段必填,如果name字段被设定了require=True
那么在POST/PUT/PATCH
等创建或更新数据时这个字段是必须要填写的。