2013-07-16 50 views
1

我已经改变了我所有的代码通过使用django.utils.timezone.now() 使用aware-time我改变DateTimeField字段使用default=timezone.now,并在settings.pyDjango的南迁和USE_TZ =真

设置USE_TZ=True更改后,我跑南schemamigration命令,并且它不会拾取数据库字段更改。

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

下面是我为了使我的整个网站时区知道做出的详细更改。
how do I make my site timezone aware?

+0

http://stackoverflow.com/questions/10994101/django-1-4-use-tz-migration-database-part-best-practices – Bryce

回答

0

如果您使用的南部,并改变USE_TZ=FalseUSE_TZ=True,所有旧的迁移将有可能打破,你会得到这样的错误:

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

我还没有找到一个办法让南跟踪settings.py中的更改。我所做的是改变实际的迁移文件。这些文件都有一个数字并位于migrations子目录中。

对于每个失败的人,添加from django.utils import timezone,并修改任何DateTimeField字段,就像您在主代码中做的那样(使他们知道时区或消除特定的非时区默认日期)。您也可以尝试reset your south migration history

0

建立在布莱斯的回答,这些都是我们用我们的南方迁移转化成的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