4

简而言之,我试图向用户展示一个使用时区感知日期时间对象初始化的 DateTime 字段,允许他们对其进行编辑并将其发回。没有做任何特别的事情,我会收到一个关于非时区感知日期时间被返回到表单的 DateTime 字段的警告。

/django/db/models/fields/__init__.py:1474: RuntimeWarning:
    DateTimeField MyModel.datetimefield received a naive datetime (2015-09-09 15:55:00)
    while time zone support is active.

我从阅读django 时区文档开始。我安装了 pytz ( pip install pytz) 并确保USE_TZ = True已设置。

我正在使用django-easy-timezones,它根据请求者的 IP 设置“当前”时区并调用timezone.activate(). 据我了解,TIME_ZONE否则该设置将用作默认设置。我还在django-bootstrap3-datetimepicker我的表单中使用了一个不错的小部件。

时区似乎没有与初始表单数据一起发送。相反,“当前”时区用于创建和发送一个简单的本地日期时间。据此我收集该clean_[field]方法旨在假设 POST 中返回的内容也在“当前”时区中。这是自动完成的还是我打算让数据时区自己知道?如果是这样,为什么我会收到警告?

简单地来回发送时区是否更有意义,始终具有时区感知日期时间?如果是这样,这里讨论了获取 javascript 的日期时间,但我还没有找到一种将它返回到 DateTime 字段格式的好方法(特别是在小部件不使用带时区的格式的情况下)。

4

0 回答 0