используя агрегат в общем c представлении django остальном - PullRequest
0 голосов
/ 21 апреля 2020

Я собираюсь вычислить сумму поля в 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

Кто-нибудь может мне помочь, пожалуйста? Заранее спасибо!

1 Ответ

0 голосов
/ 21 апреля 2020

Каждый раз, когда вызывается get_queryset (), вы должны возвращать набор запросов, но не результат. агрегат возвращает результат, тогда как аннотация возвращает набор запросов, следовательно, аннотация сработала.

Если одно поле отображается несколько раз, посмотрите на ваши данные и соответствующим образом уточните свой набор запросов, в этом случае переключение на просто агрегат не поможет.

...