Django изменить ответ объекта словаря query .annotate () - PullRequest
0 голосов
/ 27 мая 2020

Я делаю запрос SELECT COUNT (*) GROUP BY и ORDER BY к моей модели Django:

ModelName.objects.values("field_name").annotate(total=Count("field_name")).order_by("field_name")

, который дает мне массив словарей со значениями счетчика как:

[{'field_name' : value1, 'total' : count_value1}, {'field_name' : value2, 'total' : count_value2}, ...]

Теперь мой field_name имеет фиксированный набор значений, и ответ на запрос не возвращает количество field_name значения, которых нет в моей БД. Я хочу создать объект словаря всех возможных значений field_name в качестве ключа , а его считать как значения .

Например: скажем, field_name может принимать любое из 3 значения: («a», «b», «c») и моя БД содержит 2 экземпляра типа «a», не содержит ни одного экземпляра типа «b» и 1 экземпляра типа «c ". Итак, мой запрос приведет к:

[{'field_name' : "a", 'total' : 2}, {'field_name' : "c", 'total' : 1}]

(обратите внимание, что он не содержит никаких объектов для значения "b" ). Я хочу преобразовать его в объект словаря, например:

{ "a" : 2, "b" : 0, "c" : 1 }

Какой самый простой и самый простой способ c реализовать это с помощью pythoni?

Я использую PostgreSQL, если поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...