2013-05-04 38 views
0

我有我的models.DateTimeField問題,因爲I'm從墨西哥和settings.py我用這個:models.DateTimeField(auto_now_add = TRUE)

TIME_ZONE = 'America/Mexico_City' 

但是,當我加入一個寄存器我的MySQL數據庫,它說,登記加入18:00(4小時後,因爲在這裏,在墨西哥城的時間爲14:00)

titulo = models.CharField(max_length = 60) 
contenido = models.CharField(max_length = 140) 
fecha = models.DateTimeField(auto_now_add = True) 
+0

你使用的是什麼django版本? – alecxe 2013-05-04 19:13:25

+0

我的Django版本是1.5.1。 – 2013-05-04 21:14:11

+0

嗯,它應該是正確的,因爲Django自1.4以正確的方式支持時區 - 所以'auto_now_add'應該考慮配置的時區(參見[docs](https://docs.djangoproject.com/en/)開發/ REF/utils的/#模塊django.utils.timezone))。你的設置中是否有'USE_TZ = True'? – alecxe 2013-05-04 21:55:25

回答

4

如果啓用USE_TZ =真,則Django然後使用UTC所有次在數據庫中。這就是爲什麼你看到時間提前4小時 - 這是UTC時間。

​​

Django的有助手採取UTC,然後將其轉換回給你,當你在一個視圖中顯示它。嘗試獲得從使用DateTimeField字段,並嘗試這種在視圖中dB的對象,其中{{ value }}是日期時間:

{% load tz %} 

{% localtime on %} 
    {{ value }} 
{% endlocaltime %} 

{% localtime off %} 
    {{ value }} 
{% endlocaltime %} 

您可能必須安裝pytz作爲一項要求,如果你還沒有這樣做的話:

pip install pytz 
相關問題