【发布时间】:2015-03-04 06:08:39
【问题描述】:
我在 Django 中使用 ReportLab。我有一个具有以下字段的模型:
time_stamp = models.DateTimeField(auto_now_add=True)
我在 settings.py 中的TIME_ZONE 变量设置为:
Africa/Johannesburg
我使用一个表单集来填充这个模型。 time_stamp 字段使用正确的时区正确保存,但是当我将 time_stamp 放在 ReportLab pdf 中时,时区设置为 UTC。
例如:
time_stamp 在保存的模型中(str(time_stamp)[:19] 是:
2015-03-04 07:57:28
但是time_stamp在pdf文档中(因为str(time_stamp)[:19]是:
2015-03-04 05:57:28
正好提前 2 小时(非洲/约翰内斯堡是 UTC + 2 小时)。
如何设置 ReportLab 的时区?生成pdf时是否应该在settings.py或views.py中指定?如果没有解决办法,如何给time_stamp加2小时?
一些答案建议将auto_now_add=True 更改为default=datetime.datetime.now(),但这会在迁移数据库时产生警告(使用朴素表达式)。
【问题讨论】:
-
你的设置中 USE_TZ 的值是多少?
-
没有注意到设置 - 将其更改为 USE_TZ=False 并且可以正常工作!感谢您的提示!