[解決済み]どのようにdjangoでGROUP BYとしてクエリを実行するには?
2022-03-24 02:57:22
質問
あるモデルにクエリを発行します。
Members.objects.all()
と返ってきます。
Eric, Salesman, X-Shop
Freddie, Manager, X2-Shop
Teddy, Salesman, X2-Shop
Sean, Manager, X2-Shop
私が欲しいのは、Djangoの最良の方法である
a
group_by
のような、データベースへのクエリ。
Members.objects.all().group_by('designation')
もちろん、うまくいきません。
のトリックができるのは知っています。
django/db/models/query.py
しかし、パッチを当てずにそれを行う方法を知りたいと思っています。
どのように解決するのですか?
もし、集計を行うのであれば ORMのアグリゲーション機能 :
from django.db.models import Count
result = (Members.objects
.values('designation')
.annotate(dcount=Count('designation'))
.order_by()
)
この結果、次のようなクエリになります。
SELECT designation, COUNT(designation) AS dcount
FROM members GROUP BY designation
という形式で出力されます。
[{'designation': 'Salesman', 'dcount': 2},
{'designation': 'Manager', 'dcount': 2}]
を含めない場合は
order_by()
デフォルトのソートが期待したものでない場合、正しくない結果を得る可能性があります。
複数のフィールドを結果に含めたい場合は、それらのフィールドを引数として
values
例えば、以下のようになります。
.values('designation', 'first_name', 'last_name')
参考文献
-
Djangoのドキュメントです。
values()
,annotate()
およびCount
-
Djangoのドキュメントです。
集計
というタイトルのセクションで、特に
デフォルトの順序または
order_by()
関連
-
opencvとpillowを用いた顔認証システム(デモあり)
-
Pythonの@decoratorsについてまとめてみました。
-
[解決済み】csv.Error:イテレータはバイトではなく文字列を返すべき
-
[解決済み] プログラムの実行やシステムコマンドの呼び出しはどのように行うのですか?
-
[解決済み] リストのリストからフラットなリストを作るには?
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] リストが空かどうかを確認するにはどうすればよいですか?
-
[解決済み】ネストされたディレクトリを安全に作成するには?
-
[解決済み】Djangoでnull=Trueとblank=Trueの違いは何ですか?
-
[解決済み】2つの辞書を1つの式でマージする(辞書の和をとる)には?)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
ピローによる動的キャプチャ認識のためのPythonサンプルコード
-
PicgoのイメージベッドツールをPythonで実装する
-
python implement mysql add delete check change サンプルコード
-
Python入門 openを使ったファイルの読み書きの方法
-
Pythonショートビデオクローラーチュートリアル
-
PythonでECDSAを実装する方法 知っていますか?
-
FacebookオープンソースワンストップサービスpythonのタイミングツールKats詳細
-
[解決済み】「RuntimeError: dictionary changed size during iteration」エラーを回避する方法とは?
-
[解決済み】 AttributeError("'str' object has no attribute 'read'")
-
[解決済み】IndexError: invalid index to scalar variableを修正する方法