简而言之,我试图向用户显示使用时区感知日期时间对象初始化的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.
我从阅读the django time zones docs开始。我安装了pytz(pip install pytz
)并确保设置了USE_TZ = True
。
我正在使用django-easy-timezones,它设置"当前"时区基于请求者的IP,呼叫timezone.activate()
。据我了解,设置TIME_ZONE
将被用作默认设置。我还使用django-bootstrap3-datetimepicker
在我的表单中使用了一个漂亮的小部件。
时区似乎与初始表单数据一起发送。相反,"当前" timezone用于创建和发送天真的本地日期时间。从this我收集clean_[field]
方法是为了假设在POST中返回的内容也在"当前"时区。这是自动完成还是我的意思是让我自己知道数据时区?如果是这样,为什么我会收到警告?
简单地来回发送时区更有意义,总是有时区感知日期时间吗?如果是这样,将日期时间转换为javascript会被here讨论,但我还没有找到一种很好的方式将其返回到DateTime字段格式(尤其是小部件不使用带时区的格式)。