1

django クエリセットを月ごとにグループ化する方法を探していました。私はついにこの非常に役立つコードを見つけました:

truncate_date = connection.ops.date_trunc_sql('day','timestamp')
qs = qs.extra({'date':truncate_date})
return qs.values('date').annotate(Sum('amount')).order_by('date')

Djangoから:日付(日、月、年)でグループ化

うまくいきましたが、date返されたのは文字列であり、適切ではなく、テンプレートでdatetime.dateは使用できません。{{date|date:format}}元の送信者 (Oli) にも同じ問題があったようです。答えている人はpostgresで動作すると言っていますが、SQLiteでは成功しませんでした.

クエリまたはテンプレートで文字列から日時に変換することは可能ですか。または、すべてのエントリをループする必要がありますか?

別のトレンドに投稿して申し訳ありませんが、元のトレンドにコメントするだけの権限がありません。

4

1 に答える 1

7

テンプレート タグを使用regroupして、テンプレート レベルで月ごとにグループ化してみてください。コンテキストデータがソートされていることを確認してください:

{% regroup queryset by date_field|date:"M, Y" as objects_by_month %}
{% for group in objects_by_month %}
    {{ group.grouper }}
    {% for object in group.list %}
        {{ object }}
    {% endfor %}
{% endfor %}
于 2012-03-30T09:08:55.867 に答える