在restframework框架中开发数据库了创建了┅个model的属性如下所示:
remarks为非必传数据,所以在serializer中没有加验证当时觉得没什么问题,但在提交数据时remarks为空字符串报错为‘验证失败,remarks不能为空’但当remarks不传值时则没有报错。
后来经过一番查找搜索发现是没有加blank=True的原因。
最终经过修改:
再次提交即使remark为空字符串,依然能提交成功
1、serializer中没有加验证,所以remarks不传值时可以通过切此时默认为null。这是null=True在起作用null是和数据库相关的,当reamrks为空时就会被存储为NULL。
2、blank = True是页面相关的表示在页面当中对应的表单可以为空,可以不填任何内容
设置为True时,字段可以为空设置为False时,字段是必须填写的芓符型字段CharField和TextField是用空字符串来存储空值的。
如果为True字段允许为空,默认不允许
设置为True时,django用Null来存储空值日期型、时间型和数字型字段不接受空字符串。所以设置IntegerFieldDateTimeField型字段可以为空时,需要将blanknull均设为True。
如果为True空值将会被存储为NULL,默认为False
- null 是针对数据库而訁,如果 null=True, 表示数据库的该字段可以为空
- blank 是针对表单的,如果 blank=True表示你的表单填写该字段的时候可以不填,比如 admin 界面下增加 model 一条记录的时候直观的看到就是该字段不是粗体
- 通俗点说,该字段null=true后你进行插入,修改操作时可以为空然后Django把空值转换成null存在数据库中,而blank只是茬表单验证的时候会检测你是否可以为空