所以我正在创建一个应用程序,您可以在其中找到在各地发生的活动。
在django-admin页面上,我希望能够修改活动(有效)。
但是活动有一个开始时间 - 我希望这个开始时间与位置在同一时区。
所以我希望它在活动管理页面上显示与位置相同的时区中的开始时间,但是当保存时它应该转换为UTC时间。
starttime是一个内联formset,因为它可以有多个开始时间。
我找到了一种在保存对象时更改日期时间的方法,但是当它在内联函数中呈现时,我无法找到修改它的方法。
如何修改管理页面中呈现的数据?
答案 0 :(得分:7)
" 所以我希望它在活动管理页面上显示与位置相同的时区中的开始时间,但是当保存时它应该转换为UTC时间。"
根据Django关于表格中的时区感知输入(https://docs.djangoproject.com/en/1.10/topics/i18n/timezones/#time-zone-aware-input-in-forms)的文档:
当您启用时区支持时,Django会解释输入的日期时间 在当前时区的表单中,并返回知道的日期时间对象 在cleaning_data。
根据我的理解,你想要的是什么。这导致我们默认时区和当前时区(https://docs.djangoproject.com/en/1.10/topics/i18n/timezones/#default-current-time-zone),其中指出:
当前时区是用于渲染的时区。
您应该将当前时区设置为最终用户的实际时间 区域激活()。否则,使用默认时区。
所以,使用激活()(https://docs.djangoproject.com/en/1.10/ref/utils/#django.utils.timezone.activate)设置时区参数,你就可以了。
答案 1 :(得分:-3)
尝试设置
USE_L10N = False
在settings.py上:
https://docs.djangoproject.com/en/1.9/ref/settings/#use-l10n