Как установить поле Postgres Datetime в поле Odd Datetime
Я пытаюсь отобразить заданное время времени базы данных Postgres для поля datetime в Odoo.
Я создаю поле, чтобы установить время.
last_modify_article = fields.Datetime("Last Modify Date")
Но мой DateTime: ~ 2017-08-28T08: 43: 56 + 0200 отлично хранится в базе данных Postgres, но в Odoo видел в разных.
Итак, мой вопрос заключается в том, как я могу управлять датой даты базы данных в поле.
Вот время Postgres
И
Здесь поле Odoo устанавливает дату и время в UTC
Ответы
Ответ 1
Odoo предназначен для хранения даты и времени в формате UTC в базе данных и преобразования его в пользовательский часовой пояс на интерфейсе.
Какой часовой пояс установлен для вашего пользователя? Вы можете щелкнуть свое имя в правом верхнем углу, а затем в настройках. Часовой пояс должен отображаться во всплывающей форме.
Ответ 2
Фактически база данных хранит поле datetime в соответствии с системным часовым поясом. в одинарных представлениях, которые будут автоматически преобразованы в соответствии с часовым поясом пользователей, если они установлены.
На ваших изображениях я вижу разницу во времени id +5: 30, т.е. Часовой пояс Asia/Kolakata. поэтому ваши пользовательские операции в поле datetime нуждаются в правильном преобразовании часового пояса в соответствии с пользователем. Представления Odoo и методы orm обрабатываются tz с моментами .js и преобразования pytz. Это действительно хорошая функция для управления разными часовыми поясами в оду.
Вы можете использовать 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))