1

我正在使用支持时区的日期时间字段对 postgres 中的表进行查询。我正在做一个独特的选择,以在一天中按小时对所有结果进行分组。

footage = IpCameraFootage.objects.filter(ipCamera=c, start__gte=start, end__lte=end).extra(select={'hours': "to_char(start,'dd/mm/yyyy hh24')"}).values_list('hours', flat=True).distinct().order_by('hours')

然而,当我迭代结果时,这一切都很好。它正在应用时区转换。我正在尝试从没有时区的数据库中获取直接值。例如,如果它返回一个值:

05/03/2013 07

当我使用以下命令在 django 视图中访问 hours 变量时:

for f in footage:
   print f

值为:

04/03/2013 21

任何想法如何获得应有的结果?

干杯,

4

1 回答 1

1

您在额外语句中执行的格式化函数是否可以被返回的查询集上的纯 python 命令替换?

就像是

from django.utils.timezone import utc

for f in footage:
    print('{0:%d/%m/%Y %H}':format(f.start.replace(tzinfo=utc)))

否则,在模板中,根据django 文档,您可以使用

{% load tz %}

{% localtime off %}
    {{ value }}
{% endlocaltime %}
于 2013-03-04T23:18:39.497 回答