ホームページ > バックエンド開発 > Python チュートリアル > group_by() を使用せずに Django でクエリ結果をグループ化する方法は?

group_by() を使用せずに Django でクエリ結果をグループ化する方法は?

Mary-Kate Olsen
リリース: 2024-12-04 08:14:12
オリジナル
1029 人が閲覧しました

How to Group Query Results in Django Without Using group_by()?

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 構造に関する広範な情報が提供されています。

  • [Django ドキュメント: value()](https://docs.djangoproject.com/en/stable/ref/models/querysets/#values)
  • [Django ドキュメント: annotate()](https://docs.djangoproject .com/en/stable/ref/models/querysets/#annotate)
  • [Django ドキュメント: Count](https://docs.djangoproject.com/en/stable/ref/models/lookups/#count)

order_by() 引数を除外すると、特にデフォルトの並べ替え動作が望ましくない場合、予期しない結果が生じます。

以上がgroup_by() を使用せずに Django でクエリ結果をグループ化する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート