我正在使用 django 1.4.1,并启用了 mysql 和时区。我将数据转储到 yaml,修改了一些字段以创建一些测试数据,并尝试将其重新加载。但是,即使指定了 tz,Django 仍不断抱怨天真的日期时间
具体来说,我的负载数据有:
fields: {created_date: !!timestamp '2012-09-15 22:17:44+00:00', ...
但 loaddata 给出错误:
RuntimeWarning: DateTimeField received a naive datetime (2012-09-15 22:17:44) while time zone support is active.
这对我来说没有多大意义,因为它是:
- UTC 时间戳
- 与 Django 使用 dumpdata 导出的格式完全相同
有什么方法可以告诉 django 这是 UTC 日期吗?
问题源于 PyYAML。当 loaddata 将日期时间交给 PyYAML 时,它会获取感知的日期时间,将时间调整为 UTC,然后返回一个原始日期时间,这会生成警告。
有一个姜戈门票, 以及ASAPyYAML 票证关于这个问题。两者都更详细地介绍了上述意外行为。从票证中的评论来看,这个问题似乎不太可能很快得到解决。
你设置了吗TIME_ZONE = 'UTC'
在项目的 settings.py 中,您将在正确的时间加载,但您仍然会收到警告。如果您的时区设置为其他任何值,Django 会将日期时间视为本地日期时间,并将其调整为 UTC,这可能是不受欢迎的。
避免这种情况的最佳方法是使用 JSON 作为序列化格式。
希望有帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)