django migrate生成表结构时,对于DateTimeField类型的处理是加了6位精度的,只用django处理是没有任何问题的,但是别的框架来读取这种字段会读取不到该字段值。
在文件: 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的精度了
或者直接在数据库中修改字段长度:

探讨了Django在处理DateTimeField类型时自动添加6位精度的问题,这可能导致其他框架无法正确读取字段值。文章提供了两种解决方案:一是通过修改Django源代码中的datetime(6)为datetime;二是直接在数据库中修改字段长度。

409

被折叠的 条评论
为什么被折叠?



