2014-04-11 47 views
0

在settings.py我有:Django不在UTC保存時間戳內部數據庫(Postgres的)

USE_TZ = True 
TIME_ZONE = 'UTC' 

和在model.py:

class Game(models.Model): 
    id = models.AutoField(primary_key=True) 
    creation_timestamp = models.DateTimeField(default=lambda: timezone.localtime(timezone.now())) 

本地時間設置爲使用根據用戶時區一箇中間件,在這種情況下是'歐洲/羅馬'(so +0200)。

當我創建使用Django管理creation_timestamp一個新的遊戲實例被自動設置爲2014-04-11 12:46:59+02在頁面內顯示的形式輸入裏面,但是當我保存 它,我檢查了數據庫,會2014-04-11 12:46:59+02這是不是因爲我的期望根據文檔,Django應該在保存之前將所有時間戳記轉換爲UTC。 (我使用pgAdmin而不是Django admin來檢查數據庫數據)。

我錯了嗎?

回答

0

您可以將PostgreSQL客戶端參數時區設置爲UTC。 或將其設置在postgresql.conf中,然後重新加載或發送SIGHUP信號給postmaster pid。 timezone use exp:

digoal=# set timezone='UTC'; 
SET 
digoal=# select now(); 
       now    
------------------------------- 
2014-04-11 13:53:12.903336+00 
(1 row) 

digoal=# set timezone='PRC'; 
SET 
digoal=# select now(); 
       now    
------------------------------- 
2014-04-11 21:53:24.239343+08 
(1 row)