ホームページ >バックエンド開発 >Python チュートリアル >group_by() を使用せずに Django でクエリ結果をグループ化する方法は?
Django で GROUP BY を使用したクエリ
データベース モデルをクエリする場合、多くの場合、結果を取得するために特定のフィールドで結果をグループ化する必要があります。集約された情報。 Django では、この機能は group_by メソッドによって直接サポートされていません。ただし、Django コードベースを変更せずに同様の結果を達成する方法は複数あります。
1 つの方法は、Django の集計機能を活用することです。 Count アグリゲーターを使用すると、指定したフィールドごとにグループ化されたフィールドの出現数をカウントできます。たとえば、メンバーを指定ごとにグループ化し、各指定の出現回数をカウントするには:
from django.db.models import Count result = (Members.objects .values('designation') .annotate(dcount=Count('designation')) .order_by() )
このクエリは次のような結果を生成します:
[{'designation': 'Salesman', 'dcount': 2}, {'designation': 'Manager', 'dcount': 2}]
値には複数のフィールドを含めることができます。引数を使用して追加情報を返します。例:
.values('designation', 'first_name', 'last_name')
Django ドキュメントでは、values()、annotate()、および Count 構造に関する広範な情報が提供されています。
order_by() 引数を除外すると、特にデフォルトの並べ替え動作が望ましくない場合、予期しない結果が生じます。
以上がgroup_by() を使用せずに Django でクエリ結果をグループ化する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。