Django null=True和blank=True的区别

2022-10-11,,,

今天遇到一个问题:

在restframework框架中开发,数据库了创建了一个model的属性如下所示:

    remarks = models.charfield(verbose_name=u"描述", max_length=500, null=true)
remarks为非必传数据,所以在serializer中没有加验证,当时觉得没什么问题,但在提交数据时remarks为空字符串,报错为‘验证失败,remarks不能为空’。但当remarks不传值时则没有报错。
后来经过一番查找搜索,发现是没有加blank=true的原因。
最终经过修改:
    remarks = models.charfield(verbose_name=u"描述", max_length=500, null=true, blank = true)

再次提交,即使remark为空字符串,依然能提交成功。
总结如下:

1、serializer中没有加验证,所以remarks不传值时可以通过,切此时默认为null。这是null=true在起作用,null是和数据库相关的,当reamrks为空时,就会被存储为null。
2、blank = true是页面表单验证相关的,表示在页面当中对应的表单可以为空,可以不填任何内容。

《Django null=True和blank=True的区别.doc》

下载本文的Word格式文档,以方便收藏与打印。