Django では、データベースからデータを取得するときにクエリセットを使用することがよくあります。これらのクエリセットは、データのフィルタリング、並べ替え、および操作のためのさまざまな方法を提供します。一般的な操作の 1 つは、SQL の GROUP BY 句に似た、特定のフィールドによるデータのグループ化です。
Django でデータをグループ化するには、ORM の集計機能を利用できます。たとえば、すべてのメンバーを取得する次のクエリについて考えてみましょう:
Members.objects.all()
このクエリはタプルのリストを返します。各タプルはメンバーの詳細を表します:
[('Eric', 'Salesman', 'X-Shop'), ('Freddie', 'Manager', 'X2-Shop'), ('Teddy', 'Salesman', 'X2-Shop'), ('Sean', 'Manager', 'X2-Shop')]
これらの結果をグループ化するには指定フィールドでは、values() メソッドと annotate() メソッドを使用できます。
from django.db.models import Count result = ( Members.objects .values('designation') .annotate(dcount=Count('designation')) .order_by() )
このクエリは次のような SQL ステートメント:
SELECT designation, COUNT(designation) AS dcount FROM members GROUP BY designation
結果はディクショナリのリストで、それぞれが指定とその指定のメンバー数を表します:
[{'designation': 'Salesman', 'dcount': 2}, {'designation': 'Manager', 'dcount': 2}]
複数のフィールドを含めるには結果は、次のように、values() メソッドに引数として追加するだけです。ここ:
.values('designation', 'first_name', 'last_name')
Django での集約とグループ化の詳細については、次のリソースを参照してください:
以上がDjango のクエリセットを使用してデータをグループ化するには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。