Django にはとのQuerySet
2 つのメソッドがあります。ドキュメントには次のように書かれています:annotate
aggregate
Aggregate() とは異なり、annotate() は終端句ではありません。annotate() 句の出力は QuerySet です。https://docs.djangoproject.com/en/4.1/topics/db/aggregation/#クエリセット内の各アイテムの集計を生成する
これら 2 つの間には他に何か違いがありますか? ない場合は、なぜ違いがaggregate
存在するのですか?
ベストアンサー1
ドキュメントからの引用ではなく、サンプルクエリに焦点を当てますAggregate
。全体クエリセット。Annotate
集計値を計算します各項目クエリセット内。
集約
>>> Book.objects.aggregate(average_price=Avg('price'))
{'average_price': 34.35}
平均価格を含む辞書を返します。全てクエリセット内の書籍。
注釈
>>> q = Book.objects.annotate(num_authors=Count('authors'))
>>> q[0].num_authors
2
>>> q[1].num_authors
1
q
書籍のクエリセットですが、各書籍には著者の数が注釈として付けられています。