1

我已经更改了所有要使用aware-time的代码,方法是使用django.utils.timezone.now() 我将 datetimefield 更改为使用default=timezone.now,并USE_TZ=True在 settings.py 中设置

更改后,我运行了 south schemamigration 命令,但它没有获取数据库字段更改。

如果这很重要,我正在使用南 0.7.6 和 postgresql。

这是我为使我的整个站点时区知道而进行的详细更改。
如何让我的网站时区知道?

4

2 回答 2

0

如果您使用 south 并更改USE_TZ=FalseUSE_TZ=True,则所有旧迁移都可能会中断,并且您会收到如下错误:

RuntimeWarning: DateTimeField received a naive datetime (XXX)
while time zone support is active

我还没有找到在 settings.py 中进行南轨更改的方法。我所做的是更改实际的迁移文件。它们每个都有一个编号,并且位于迁移子目录中。

对于每个失败的字段,添加from django.utils import timezone和修改任何 DateTimeField 字段,方法与您在主代码中所做的相同(使它们知道时区,或消除特定的非时区默认日期)。

或者,您可以尝试重置您的南迁历史

于 2014-01-09T18:59:47.333 回答
0

基于 Bryce 的回答,这些是我们用来将南迁移转换为时区感知的 bash 脚本:

$ cd mysite/mainapp/migrations
$ find ./ -type f -exec sed -i -e 's/datetime.datetime.now/timezone.now/g' {} \;
$ find ./ -type f -exec sed -i -e '/import datetime/{G;s/$/from django.utils import timezone/;}' {} \;

在 OS X 10.11.5“El Capitan”上使用。

于 2016-05-20T19:34:38.703 回答