2013-07-16 45 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