IMF*_*her 6 python django yaml
我正在使用启用了mysql和timezones的django 1.4.1.我向yaml做了一个转储数据,修改了一些字段以创建一些测试数据,并且我试图将其加载回来.但是,即使指定了tz,Django仍然抱怨天真的日期时间
具体来说,我的loaddata有:
fields: {created_date: !!timestamp '2012-09-15 22:17:44+00:00', ...
Run Code Online (Sandbox Code Playgroud)
但loaddata给出错误:
RuntimeWarning: DateTimeField received a naive datetime (2012-09-15 22:17:44) while time zone support is active.
Run Code Online (Sandbox Code Playgroud)
这对我来说没有多大意义,因为它看起来像:
有什么方法可以告诉django这是一个UTC日期吗?
And*_*ham 22
问题源于PyYAML.当loaddata将日期时间移交给PyYAML时,它需要知道日期时间,将时间调整为UTC,然后返回一个天真的日期时间,从而生成警告.
有一个Django票,以及有关该问题的PyYAML票.两者都涉及上述意外行为的更多细节.从票证中的评论来看,这个问题似乎不太可能很快得到解决.
如果您TIME_ZONE = 'UTC'在项目的settings.py中设置,您将在正确的时间加载,但您仍会收到警告.如果您的时区设置为其他任何内容,Django会将日期时间视为本地时间,并将其调整为UTC,这可能是不受欢迎的.
避免这种情况的最佳方法是使用JSON作为序列化格式.
希望有所帮助.
来自文档 ......
序列化感知日期时间时,包括UTC偏移量,如下所示:
Run Code Online (Sandbox Code Playgroud)"2011-09-01T13:20:30+03:00"对于一个天真的日期时间,它显然不是:
Run Code Online (Sandbox Code Playgroud)"2011-09-01T13:20:30"
......所以而不是......
created_date: !!timestamp '2012-09-15 22:17:44+00:00'
Run Code Online (Sandbox Code Playgroud)
...... ......
created_date: '2012-09-15T22:17:44+00:00'
Run Code Online (Sandbox Code Playgroud)
...要么...
created_date: '2012-09-15T22:17:44Z'
Run Code Online (Sandbox Code Playgroud)
...将工作.
| 归档时间: |
|
| 查看次数: |
1774 次 |
| 最近记录: |