Loaddata无法正确处理时间戳和时区


问题内容

我正在使用启用了mysql和时区的django
1.4.1。我将数据转储到yaml,修改了一些字段以创建一些测试数据,然后尝试将其重新加载。但是,即使指定了tz,Django仍然抱怨原始日期时间。

具体来说,我的loaddata有:

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.

这对我来说没有多大意义,因为它是:

  1. UTC时间戳
  2. 与使用dumpdata导出的Django完全相同的格式

有什么办法可以告诉Django这是UTC日期吗?


问题答案:

文档

序列化感知日期时间时,将包括UTC偏移量,如下所示:

"2011-09-01T13:20:30+03:00"

对于幼稚的日期时间,显然不是:

"2011-09-01T13:20:30"

…所以而不是…

created_date: !!timestamp '2012-09-15 22:17:44+00:00'

…任何一个…

created_date: '2012-09-15T22:17:44+00:00'

…要么…

created_date: '2012-09-15T22:17:44Z'

…将工作。