48

QuerySet 内の各アイテムの集計を生成しています。

def get_queryset(self):
    from django.db.models import Count
    queryset = Book.objects.annotate(Count('authors'))
    return queryset

しかし、JSON 応答でカウントが得られません。

前もって感謝します。

4

4 に答える 4

37

get_queryset から返されるクエリセットは、オブジェクトの表現方法を制御するシリアライザーを通過するもののリストを提供します。Book シリアライザーに次のようなフィールドを追加してみてください。

author_count = serializers.IntegerField(
    source='author_set.count', 
    read_only=True
)

編集:他の人が述べているように、これは各インスタンスのデータベースにヒットするため、多くの結果が返される場合にカウントを追加する最も効率的な方法ではありません。より効率的なソリューションについては、@José による回答を参照してください。

于 2013-08-26T01:22:42.780 に答える