Django null=True和blank=True的区别

今天遇到一个问题:

在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的区别)