Django-admin中的DateTimeField是否支持Ttimezone?

时间:2019-05-29 10:07:26

标签: django timezone django-admin

我们有一个Django模型竞赛:

class Contest(models.Model):
    ...
    time_start = models.DateTimeField()

Django settings.py具有以下TZ设置:

LANGUAGE_CODE = 'ru-ru'
TIME_ZONE = 'Europe/Moscow'
USE_I18N = True
USE_L10N = True
USE_TZ = True

服务器时间设置为MSK + 03时区:

$ date
Wed May 29 12:41:14 MSK 2019

期待什么

  1. Django将UTC日期时间存储在数据库中。
  2. 当我打开对象进行编辑时,django-admin将UTC日期时间从数据库转换为本地计算机时区,该时区已存储在django会话中。
  3. 反之亦然,当我保存带有日期的对象时,它会从本地计算机TZ(在django admin中输入)转换为UTC并存储在数据库中。

我得到了什么

  1. Django不会将接收到的日期时间转换为UTC,而是仅使用TIME_ZONE偏移量进行更正并将其保存到数据库。没关系,在我本地计算的US / RU / etc中使用哪个TZ。总是减去-03小时,因为“欧洲/莫斯科”偏移量是+03,并将结果保存到DB。
  2. 当我在本地计算机上更改TZ并重新登录django-admin时,对象日期时间未得到纠正以尊重我当前的客户端TZ,但是即使我使用了不同的时区,也始终保持不变。

那么,它应该如何工作?

数据库

MariaDB> describe contest;
+------------------+------------+------+-----+---------+----------------+
| Field            | Type       | Null | Key | Default | Extra          |
+------------------+------------+------+-----+---------+----------------+
| time_start       | datetime   | YES  |     | NULL    |                |

Django版本:

>>> django.__version__
'2.2.1'

谢谢。

0 个答案:

没有答案
相关问题