环境:django 1.9.7
背景介绍
django migrate 生成表结构时,对于DateTimeField 类型的处理是加了6位精度的,只用django处理是没有任何问题的,但是如何别的框架来读取这种字段会读取不到该字段值。
参考链接
上面的fix是 datetime -> datetime(6)
详情
跟踪调试发现如下东西
在文件: django/db/backends/mysql/base.py line:184
data_types 方法有如下代码:
@cached_property
def data_types(self):
if self.features.supports_microsecond_precision:
return dict(self._data_types, DateTimeField='datetime(6)', TimeField='time(6)')
else:
return self._data_types
知道了这些后,我们只需要将 datetime(6) 修改为 datetime 就能在数据库表创建时不指定DATETIME的精度了