我認爲Django創建了時區不可知的日期時間列,但是當我查看Postgres表時,我看到那裏記錄的值有時區信息。爲什麼Django使用時區創建Postgres時間戳列?
走得更遠我發現Postgres後端指示Django創建使用時區的列。
從django的/分貝/後端/ PostgreSQL的/ creation.py:
data_types = {
...
'DateTimeField': 'timestamp with time zone',
...
架構表明創建的列被指定爲 「時間戳與時區」。
CREATE TABLE notification_notice
(
...
created timestamp with time zone NOT NULL,
...
Postgres日誌顯示發送的更新語句。 Django根據我的Django設置文件的指示構建了一個使用UTC作爲時區的SQL語句。
UPDATE "notification_notice" SET "sender_id" = 1, "group_id" = NULL, "notice_type_id" = 1, "content_type_id" = 21, "object_id" = 3, "created" = E'2011-11-11 22:31:08.022148' WHERE "notification_notice"."id" = 14
這就是我的表的樣子。創建的列的時區具有「-08」時區。 Postgres必須檢查我的系統時鐘的時區以查找時區。
my_db=# select * from notification_notice limit 1;
id | sender_id | group_id | notice_type_id | content_type_id | object_id | created | last_interaction_time
----+-----------+----------+----------------+-----------------+-----------+------------------------------+-----------------------
1 | | 3 | 21 | 53 | 6 | 2011-11-11 14:31:02.98882-08 |
(1 row)
問題:
不Django的有放手政策時區?
爲什麼Postgres後端爲models.DateTimeField使用時區?這是Postgres需要的嗎?
有沒有辦法強制Django在Postgres中創建不使用時區的時間戳列?
可能的答案:[here](http://stackoverflow.com/questions/1869419/django-datetime-field-to-generate-timestamp-fields-without-timezone/1869568#1869568) – unutbu