問題場景:
在django admin models 實體對象添加一個屬性最后修改時間,用戶在添加、修改是系統自動修改操作時間。
UpdateTime自動獲取系統時間、並且自動修改。
代碼設置如下。
class User(models.Model):
Name = models.ForeignKey(HotTag,verbose_name='姓名'))
Desc = models.CharField('簡介', blank=True, max_length=50)
CreateTime = models.DateTimeField('添加時間', default=datetime.now())
UpdateTime = models.DateTimeField('修改時間',auto_now=True,default=datetime.now())
上面代碼設置是沒有問題的。
當放到linux 完全上去跑是,發現UpdateTime和CreateTime(數據庫字段)時間和系統時間不一致。
當修改記錄是UpdateTime也能自動修改時間就,當是時間還是和系統時間不一致。
問題分析:
django 時區和當前linux系統時間時區不一致。
原來django settings.py 中的配置如下:
# system time zone. TIME_ZONE = 'America/Chicago'
'America/Chicago' :是美國芝加哥時間
處理方式:
如果把他修改為:
# system time zone. #TIME_ZONE = 'America/Chicago' TIME_ZONE = ‘Asia/Shanghai’
Asia/Shanghai (上海時間)
Asia/Beijing (北京時間)
兩時區是一致的。
重啟django 項目 在登陸后台網站修改用戶數據發現這時時間是一致的。
附加內容:
DateField:日期字段,admin 用一個文本框 <input type=”text”> 來表示該字段數據(附帶一個 JavaScript 日歷和一個”Today”快捷按鍵。有下列額外的可選參數:
auto_now:當對象被保存時,自動將該字段的值設置為當前時間.通常用於表示 “last-modified” 時間戳;
auto_now_add:當對象首次被創建時,自動將該字段的值設置為當前時間.通常用於表示對象創建時間。
GMT 就是格林威治標准時間的英文縮寫(Greenwich Mean Time 格林尼治標准時間),是世界標准時間.
gmt-8 是格林威治時間+8小時,是北京時間.
