Получение уважительных значений из метода Django annotate

У меня есть следующее query:

result = data.values('collaborator').annotate(amount=Count('cc'))
top = result.order_by('-amount')[:3]

Вот этот, получить поле collaborator из данных, данные это Django Queryset, я пытаюсь сделать как GROUP BY запрос, и он работает, но когда я вызываю метод .values() на переменной top, он возвращает все экземпляры моделей в виде dicts в queryset, мне нужен результат метода annotate в виде списка dicts: Ниже приведено содержание переменной top на shell:

<QuerySet [{'collaborator': '1092788966', 'amount': 20}, {'collaborator': '1083692812', 'amount': 20}, {'collaborator': '1083572767', 'amount': 20}]>

Но когда я делаю list(top.values()), я получаю следующий результат:

[{'name': 'Alyse Caffin', 'cc': '1043346592', 'location': 'Wu’an', 'gender': 'MASCULINO', 'voting_place': 'Corporación Educativa American School Barranquilla', 'table_number': '6', 'status': 'ESPERADO', 'amount': 1}, {'name': 'Barthel Hanlin', 'cc': '1043238706', 'location': 'General Santos', 'gender': 'MASCULINO', 'voting_place': 'Colegio San José – Compañía de Jesús Barranquilla', 'table_number': '10', 'status': 'PENDIENTE', 'amount': 1}, {'name': 'Harv Gertz', 'cc': '1043550513', 'location': 'Makueni', 'gender': 'FEMENINO', 'voting_place': 'Corporación Educativa American School Barranquilla', 'table_number': '7', 'status': 'ESPERADO', 'amount': 1}] 

Я просто хочу, чтобы результат был таким:

[{'collaborator': '1092788966', 'amount': 20}, {'collaborator': '1083692812', 'amount': 20}, {'collaborator': '1083572767', 'amount': 20}]

что-то не так, возможно, опечатка (также кажется, что вы не показываете полный запрос... что-то вроде data=yourmodel.objects.filter... отсутствует ранее):

Вывод list(top.values()) возвращает совершенно другие поля модели, чем то, что вы публикуете как top Queryset - вы уверены, что действительно сделали:

result = data.values('collaborator').annotate(amount=Count('cc'))
top = result.order_by('-amount')[:3]
list(top.values())

потому что это должно дать то, что вы ожидаете (при условии, что данные являются Queryset)

Вернуться на верх