Django のaggregate()とannotate()の違い 質問する

Django のaggregate()とannotate()の違い 質問する

Django にはとのQuerySet2 つのメソッドがあります。ドキュメントには次のように書かれています:annotateaggregate

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書籍のクエリセットですが、各書籍には著者の数が注釈として付けられています。

おすすめ記事