Django 特定のフィールドでGROUP BYして集計する

※model, urlsの定義は割愛します。

DBオブジェクト操作時、values(‘カラム名’).annotate(…)の順で書くと、カラム名でGROUP BYされた動きになります。

またvaluesするときでもannotateするときでも、’ラベル=カラム名’とすると、別名(ラベル名)で受け取れます。

 

select_related を加えるとで外部キー参照している親テーブルをJOINできます。

 

親テーブルをJOINした時、values に ‘キー_親テーブルのカラム名’を指定すると、親テーブルの値を取得できます。

 

具体的なview.py、templateの内容は以下のようになります。

views.py

 

template.html

別名を付けたものは辞書型で取り出せます。別名付けなかった場合は、Sumしたものであれば ‘カラム名__sum’ の形で取り出せます。

 

 

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*