Count() выводит список, а не словарь в django

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

job_title = Employee.objects.filter().values('role__name').annotate(total=Count('id'))

на выходе я получаю [{'tole__name': 'Manager', 'total':2}, {'role__name': 'Director': 3}]

теперь когда я пытаюсь получить словарь типа {2, 3} используя totals = job_title['total] я получаю ошибку

Было бы неплохо, если бы вы поделились ошибкой, чтобы у нас была полная информация. Кроме того, вывод, похоже, не отформатирован должным образом, но кажется, что вы должны просто итерировать список и получить общее число, как показано ниже.

получить словарь вида {2, 3}

Кроме того, это выглядит как набор, а не словарь, поэтому я предположу, что вам нужен набор:

Я собираюсь предположить, что вывод job_title будет: [{'role__name': 'Manager', 'total':2}, {'role__name': 'Director', 'total': 3}]

totals = set()
for role in job_total:
    totals.add(role['total'])

При желании вы можете превратить это в однострочный текст, но это должно ответить на ваш вопрос. Если вам нужен список, измените totals = set() на totals = [] и .add на .append

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