2017-08-28 221 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)) 
相关问题