1

タイムゾーンをサポートする日時フィールドを使用して、postgres のテーブルに対してクエリを実行しています。すべての結果を1日の時間ごとにグループ化するために、明確な選択を行っています。

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ビューで時間変数にアクセスすると:

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 に答える