2017-08-28 148 views
12

我試圖將Postgres數據庫時間到日期時間字段的設置時間顯示到Odoo中。如何將Postgres日期時間字段設置爲Odoo日期時間字段

我創建的領域是設定時間。

last_modify_article = fields.Datetime("Last Modify Date") 

但我的日期時間:〜2017-08-28T08:43:56 + 0200是完全存儲在Postgres數據庫,但Odoo不同看到的。

所以,我的問題是,我如何管理數據庫的日期時間在現場。

Here is the Postgres Time

而且

Here is Odoo field to set datetime in UTC

回答

4

Odoo被設計爲具有存儲在數據庫中的UTC日期和時間,並將其轉換到用戶的時區的前端。

什麼時區爲您的用戶設置?您可以點擊右上角的您的姓名,然後點擊首選項。時區應顯示在彈出窗體上。

+0

是你的權利Odoo設置爲UTC,但我的時間是正確的數據庫,所以我怎麼可以在現場打印的同時, 。而且我正在與其他國家/地區合作,因此我無法將時區分配到我的偏好設置中。如果我指定時區與瀏覽器不匹配。這樣,我打印與我的字段值中的數據庫值相同 –

+0

@HarshitTrivedi您是手動設置數據庫中的時間(或Python中)還是從Odoo前端設置? – travisw

+0

實際上我使用API​​,因此我可以獲取API並設置DateTime字段 –

4

實際上,數據庫根據系統時區存儲日期時間字段。在odoo視圖中,如果已設置,將根據用戶時區自動轉換。 在你的圖片上,我可以看到時差ID +5:30,即亞洲/科拉卡塔時區。所以您在日期時間字段上的自定義操作需要根據用戶對時區進行適當的轉換。 Odoo視圖和orm方法被視爲帶有moment.js和pytz轉換的tz。這實際上是一個很好的功能來管理odoo中的不同時區。 您可以使用astimezone DateTime對象上:

def astimezone(self, tz): # known case of datetime.datetime.astimezone 
    """ tz -> convert to local time in new timezone tz """ 
    return datetime(1, 1, 1) 

fields.Datetime.context_timestamp(self, datetime.strptime(value, DEFAULT_SERVER_DATETIME_FORMAT))