2013-12-11 191 views
3

我遇到了經典的DateTimeField received a naive datetime while time zone support is active警告扭曲。當我運行使用由factory_boy提供的工廠的測試時發生錯誤。這裏是一家工廠的例子:日期時間字段收到天真的日期時間

from django.utils.timezone import now 
import factory 
class PostFactory(factory.DjangoModelFactory): 
    FACTORY_FOR = models.Post 
    value = 42 
    created = now() 

正如你所看到的,我使用的是從Django的時區的現在()方法,它應該照顧整個天真的日期時間的事情,但事實並非如此。這裏的模型是什麼樣子:

class Post(models.Model) 
    value = models.IntegerField() 
    created = models.DateTimeField(auto_now_add=True) 

而且,在我的settings.py文件,我已經設置USE_TZ = True

我試過安裝pytz並使用它的庫創建一個日期時間對象來填充工廠中的字段,但這也不起作用。

我知道我可以壓制警告,但它已經開始咬我在代碼的其他領域,我想深究一下。 。 。

+0

['dutnow()'如果USE_TZ = True,則返回一個已知對象](https://docs.djangoproject.com/zh/dev/ref/utils/#django.utils.timezone.now) – jfs

+0

我知道。這就是爲什麼我被我得到的錯誤困惑,因爲我使用d.u.t.now()來填充DateTimeField。 – user1427661

+0

你確定這部分代碼給你警告嗎? – Rohan

回答

0

您還需要更改timezonesettings.py

USE_TZFalse,這是Django將存儲所有日期時間的時區。當USE_TZTrue時,這是Django將用於在模板中顯示日期時間的默認時區,並解釋輸入到表單中的日期時間。

+0

忘了提,我已將USE_TZ設置爲True。已更新帖子以反映 – user1427661

+0

這不起作用。我只是忘了提及沒有工作的代碼已經將USE_TZ設置爲True。 – user1427661

相關問題