首页 > 解决方案 > 在通用视图中使用聚合 django rest

问题描述

我要在 django 中计算一个字段的总和,但我没有这样做我收到这个错误

AttributeError: 'dict' object has no attribute 'model'

annotate可以工作,但它多次显示一个字段,这就是我需要使用聚合的原因

这是我的代码

class TestStatistics(generics.ListAPIView):
    serializer_class = TestSerializer
    permission_classes = (permissions.AllowAny,)
    filter_class = TestStatisticsFilter

    def get_queryset(self):
        test_id = self.request.GET.get('test_id')

        data =  Test.objects.filter( test_id=test_id).aggregate(total=Sum('total'))
        print(data)
        return data

有人可以帮我吗?提前致谢!

标签: pythondjangodjango-modelsdjango-rest-framework

解决方案


每当调用 get_queryset() 时,您应该返回一个查询集而不是结果。聚合返回结果,而注释返回查询集,因此注释起作用。

如果一个字段显示多次,请查看您的数据并相应地优化您的查询集,在这种情况下切换到聚合并没有帮助。


推荐阅读