项目中有一个bug,明明MySQL中update_time的缺省值为CURRENT_TIMESTAMP,但是第一次插入的时候总是为NULL,后续也不会更新。
问题一:初始插入时 时间字段为null
但是初始的时候为什么为NULL呢?
因为项目中后端用到了Django 的ORM框架,其中的model模型定义如下
在DateTimeField中参数设置blank为True,null为True
关于这两个字段详细的介绍可以参考django数据模型中null和blank的区别说明
我这里总结一下:
- null默认为False,表示非空,如果没有传任何字段,django就会传一个空字符串’'进去。如果null设为True,表示可以为空,此时django会产生两种空值(NULL或空字符串)。如果在表单验证的时候运行字符串捏空,blank=True。
- blank默认为False,用于表单验证。
所以这里如果创建字段的时候,没有插入update_time和handle_time,django会自动插入null,类似于