0

Django 的文档提到,在切换到 USE_TZ=True 时,所有数据都应该转换为 UTC。请参阅:https ://docs.djangoproject.com/en/dev/topics/i18n/timezones/#other-databases

这是一个相当简洁的评论。是否有任何脚本/技巧可以“一次性”执行此操作,并且能够在开发和生产中轻松进行相同的转换。

我想这不是 South 应该做的事情,因为 USE_TZ 设置是在项目级别完成的,而 South 迁移绑定到应用程序。另外,我不确定 South 会从数据中获得什么观点。推测 South 正在重用 Django 的 ORM,因此尝试通过该层做任何事情会导致令人困惑的结果,并且还取决于设置 USE_TZ 是否已经更改为 True。事实上,对于通过 ORM 路由的数据库的任何操作都可以这样说。正确的?

非常感谢,

克拉斯

4

1 回答 1

1

当文档说“数据”时,它指的是固定装置。简单地说,当移动到 TZ 感知的数据库时,您需要更新夹具中的任何日期时间字符串。因此,下文提到的固定装置部分包含您正在寻找的附加信息。

也就是说,这不是你应该在开发和生产之间来回改变的东西。很多人喜欢使用 SQLite 进行开发(有充分的理由),但不幸的是目前 TZ 不知道它。因此,如果您需要创建一个站点,您确实需要在开发中使用不同的数据库。TZ 感知数据很棘手,一旦投入生产,这不是你应该第一次测试的东西。您应该在开发时处理它,因此您知道它将在生产中工作。

因此,Django 的建议集中在将旧的 TZ naive 数据一次性迁移到 TZ 感知数据,而不是如何一时兴起来回切换它们。

于 2012-06-12T14:50:45.700 回答