【问题标题】:migrating mysql datetime fields from django 1.3 to django 1.4将 mysql 日期时间字段从 django 1.3 迁移到 django 1.4
【发布时间】:2012-04-21 08:27:57
【问题描述】:

在我的settings.py 中,我使用America/Chicago 作为我的默认TIME_ZONE 变量。我将很快更新到 django 1.4。作为一个 MySql 用户,我想知道在升级之前是否有什么我需要知道的。

升级到 1.4 的原因当然是 django 1.4 提供的时区支持,这对我目前正在做的事情非常重要。我注意到 MySQL 时间戳对象不是 UTC 格式(我的模型都使用DateTimeField())。

我该怎么办?

【问题讨论】:

    标签: mysql django timezone


    【解决方案1】:

    我现在正在处理此升级,遗憾的是没有明确的路径可供遵循。 django 1.4 迁移指南指示数据库中的值需要转换但this isn't possible deterministically!

    因此,您必须转换值,但要知道在夏令时转换前后的某些情况下,转换并不完美。我计划在 django 1.4 中使用新的make_aware(value, timezone) 函数来转换日期时间值,我将在输入日期时间增加一小时后重试转换来处理异常。

    这里是specific details and lots more sample code for converting local time to UTC in python

    【讨论】:

    • 谢谢。我已经设法进行升级。我花了几天时间,因为一些模块(如 django-notification 或 django-avatar,甚至 South)也需要修改/更新。我在使用新的模板时区过滤器时也遇到了一些问题,所以我写了我的。在我的模板过滤器中,我还使用了一种类似于您建议的方法。我发现 make_aware() 和 make_naive() 非常有用。总而言之,迁移并不容易。我花了一些时间。我也必须对模型进行一些更改。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-18
    • 1970-01-01
    • 2012-08-15
    • 2016-10-06
    • 2015-01-28
    • 2010-12-25
    • 1970-01-01
    相关资源
    最近更新 更多