1

在我的客戶模型中,我有兩個日期時間字段用於存儲創建和更新的時間。Django:將gmt時間存儲在數據庫表中而不是當地時間

datetime_created = models.DateTimeField(auto_now_add=True) 
datetime_updated = models.DateTimeField(auto_now=True) 

當我創建一個客戶,現在它在數據庫中存儲的本地時間,當我通過API得到這個客戶的數據,它返回GMT時間日期時間。這可以。但我想在數據庫中保存gmt時間。我認爲將本地時間存儲在數據庫中並不是一個好的做法。

在settings.py文件日期設置爲

LANGUAGE_CODE = 'en-us' 
TIME_ZONE = 'UTC' 
USE_I18N = True 
USE_L10N = True 
USE_TZ = True 

我已經安裝了「點子安裝pytz」模塊和我的數據庫PostgreSQL的是。

+0

中當然這是一個很好的做法,用UTC保存。我建議你用utc保存你的日期時間,並用'pytz'或在你的模板中使用'tz'標籤將它轉換爲你的視圖中的方便 –

回答

3

最佳做法是以UTC格式保存它。

USE_TZ = True在你的設置,Django會在數據庫中存儲日期和時間信息在UTC否則它將存儲天真的日期時間

0

你分辯,最好的做法就是在你的UTC日期時間字段保存,並使用pytz或在使用tz標記的模板中將其轉換爲您的視圖中的方便。

IE,你可以使用pytz你的時間值轉換在特定日期時間在你的意見

import pytz 

datetime_with_new_tz = object.created_at.astimezone(pytz.timezone(YOUR_LOCAL_TIMEZONE))` 

,如果你想的時區轉換成在你的模板,你可以使用tz

{% load tz %} 
{{object.created_at|timezone:YOUR_LOCAL_TIMEZONE}}