数据迁移从datefield到datetimefield

时间:2014-05-11 10:54:37

标签: python django django-models

我只是想知道我哪里做错了什么。所以这就是场景。

我有一个字段date = DateField(),然后我想将其更改为d ate = DateTimeField(),而不会丢失从中存储的数据。

我做了什么:

  • 添加临时字段temp = DatetimeField(),然后通过datamigration将值从date = DateField()传输到temp
  • 删除date = DateField()
  • 添加date = DateTimeField()
  • 将存储的值从temp转移到date

一切都很好,没有错误。但有一点发生了变化,the value

例如:

旧数据:datetime.date(2014, 5, 5)

新数据:datetime.datetime(2014, 5, 4, 12, 0, tzinfo=UTC)

所以我的问题是,它为什么会改变并且距离原始值deduct 1天?有什么想法吗?是因为时区吗?时区设置为Pacific/Auckland

非常感谢任何帮助。谢谢!

1 个答案:

答案 0 :(得分:1)

太平洋/奥克兰的GMT偏差 UTC + 12 (小时)。

datetime.datetime(2014, 5, 4, 12, 0, tzinfo=UTC)代表中午UTC 4日。但由于这个消息,这是在奥克兰的午夜。然而,奥克兰的午夜实际上是“小时0”在5日

所以,是的,这个问题确实与时区有关,但实际上并不是问题。日期没有改变,只是在不同的时区表达。


当然,您可以回滚迁移,并且在步骤1中对时区进行不同的考虑,将date转换为datetime