Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django ReportLab时区_Django_Timezone_Reportlab - Fatal编程技术网

Django ReportLab时区

Django ReportLab时区,django,timezone,reportlab,Django,Timezone,Reportlab,我在Django使用ReportLab。我有一个具有以下字段的模型: time_stamp = models.DateTimeField(auto_now_add=True) 设置.py中的my时区变量设置为: Africa/Johannesburg 我使用一个表单集来填充这个模型。time_stamp字段使用正确的时区正确保存,但当我将time_stamp放入ReportLab pdf中时,时区设置为UTC 例如: 保存的模型中的time\u stamp(作为str(time\u stam

我在Django使用ReportLab。我有一个具有以下字段的模型:

time_stamp = models.DateTimeField(auto_now_add=True)
设置.py中的my
时区变量设置为:

Africa/Johannesburg
我使用一个表单集来填充这个模型。time_stamp字段使用正确的时区正确保存,但当我将time_stamp放入ReportLab pdf中时,时区设置为UTC

例如: 保存的模型中的
time\u stamp
(作为
str(time\u stamp)[:19]
是:

2015-03-04 07:57:28
2015-03-04 05:57:28
但是pdf文档中的时间戳是:

2015-03-04 07:57:28
2015-03-04 05:57:28
正好提前2小时(非洲/约翰内斯堡是UTC+2小时)

如何设置ReportLab的时区?生成pdf时应在settings.py或views.py中指定时区?如果没有解决方案,如何在
时间戳中添加2小时


一些答案建议使用
default=datetime.datetime.now()
更改
auto\u now\u add=True
,但这会在迁移数据库时产生警告(使用了朴素表达式).

我不是Reportlab的用户,但总的来说,我不认为设置USE_TZ=False是解决问题的正确方法。请将其设置为True,而不是自己截断时间戳,如:

str(time_stamp)[:19]
您应该尝试在模板中应用Django,例如:

{{ time_stamp|date:"SHORT_DATETIME_FORMAT" }}
Django如何处理时区可能会让人困惑。但最好的做法是在数据库中以UTC格式保存时间戳。您可能需要参考Django的时区常见问题解答:


在您的设置中,USE_TZ的值是多少?没有注意到该设置-将其更改为USE_TZ=False,它就可以工作了!感谢您的提示!