2017-08-28 119 views
12

Tôi đang cố gắng hiển thị thời gian đã đặt của thời gian cơ sở dữ liệu Postgres thành trường datetime thành Odoo.Cách đặt trường Ngày giờ Postgres thành trường Ngày giờ Odoo

Tôi đang tạo trường là để đặt thời gian.

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

Nhưng ngày giờ của tôi: ~ 2017-08-28T08: 43: 56 + 0200 được lưu trữ hoàn toàn trong cơ sở dữ liệu Postgres nhưng ở Odoo thấy khác nhau.

Vì vậy, câu hỏi của tôi là làm thế nào tôi có thể quản lý cơ sở dữ liệu ngày-thời gian trong lĩnh vực này.

Here is the Postgres Time

Here is Odoo field to set datetime in UTC

Trả lời

4

Odoo được thiết kế để có ngày và thời gian lưu trữ như UTC trong cơ sở dữ liệu và chuyển nó sang múi giờ của người dùng trên front-end.

Múi giờ nào được đặt cho người dùng của bạn? Bạn có thể nhấp vào tên của mình ở trên cùng bên phải, sau đó nhấp vào Tùy chọn. Múi giờ sẽ được hiển thị trên biểu mẫu bật lên.

+0

có bạn quyền Odoo được đặt thành UTC nhưng thời gian của tôi là chính xác trong cơ sở dữ liệu vậy làm thế nào tôi có thể in cùng một thời gian trong lĩnh vực này . Và tôi đang làm việc với một quốc gia khác vì vậy tôi không thể chỉ định múi giờ vào Tuỳ chọn của mình. và nếu tôi chỉ định múi giờ không khớp với trình duyệt. Vì vậy theo cách đó tôi in giống như giá trị cơ sở dữ liệu trong giá trị trường của tôi –

+0

@HarshitTrivedi Bạn có tự đặt thời gian trong cơ sở dữ liệu (hoặc bằng Python) hoặc được đặt từ giao diện người dùng Odoo không? – travisw

+0

thực sự tôi làm việc với API để tôi có thể lấy API và đặt trường DateTime –

4

Trên thực tế, cơ sở dữ liệu lưu trữ trường ngày giờ theo múi giờ của hệ thống. trong các chế độ xem odoo sẽ được Tự động chuyển đổi theo múi giờ của người dùng nếu được đặt. Trên hình ảnh của bạn, tôi có thể thấy id chênh lệch múi giờ +5: 30 tức là múi giờ Châu Á/Kolakata. do đó, các hoạt động tùy chỉnh của bạn trên trường ngày giờ cần chuyển đổi đúng múi giờ theo người dùng. Các khung nhìn Odoo và các phương thức orm được xử lý tz với moment.js và các chuyển đổi pytz. Đây thực sự là một tính năng tốt để quản lý các múi giờ khác nhau trong odoo. Bạn có thể sử dụng astimezone trên đối tượng 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) 

hoặc

fields.Datetime.context_timestamp(self, datetime.strptime(value, DEFAULT_SERVER_DATETIME_FORMAT)) 
Các vấn đề liên quan