如何在Django-rest-framework queryset响应中添加注释数据?

发布于 2021-01-29 18:16:21

我正在为QuerySet中的每个项目生成聚合:

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

但是我没有得到JSON响应中的计数。

先感谢您。

关注者
0
被浏览
142
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    从get_queryset返回的queryset提供了将要通过序列化程序的内容的列表,该序列化程序控制对象的表示方式。尝试在Book序列化器中添加其他字段,例如:

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

    编辑:
    正如其他人所说,这不是返回许多结果的情况下增加计数的最有效方法,因为它将对每个实例命中数据库。请参阅@José的答案,以获得更有效的解决方案。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看