Django показывает значения аннотированного набора запросов, не зная имени поля - PullRequest
0 голосов
/ 21 февраля 2019

Я создаю информационную панель, где вы можете скрестить данные из базы данных продаж.

Например, продажи по продавцу, продукты по клиенту и т. Д. Я разрешаю пользователю выбирать как вариант 1, так и вариант 2.

Я возвращаю форму в представление и аннотирую модель с этими параметрами:

if filter_opts.is_valid():
    option_1 = filter_opts.cleaned_data["option_1"]
    option_2 = filter_opts.cleaned_data["option_2"]
    results = ventas.values(option_2).annotate(Count(option_1, distinct=True))

Аннотация работает нормально, и если я просто распечатываю набор запросов в шаблоне

{% for case in results %}
    {{ case }}
{% endfor %}

Я вижу это как:

{'cliente': '502 EMSUR', 'prod_nombre__count': 9}

Тогда в шаблоне я хочу показать только значения.Но я не могу заранее сказать, какое имя будет иметь значение, чтобы сделать что-то вроде этого:

{% for case in results %}
    {{ case.option_1 }}
    {{ case.option_2 }}
{% endfor %}

Если я переберу результат, я увижу имя поля:

{% for case in results %}
    {% for item in case %}
        {{ item }}
    {% endfor %}
{% endfor %}

Как я могу показать значения этих полей?

Спасибо!

1 Ответ

0 голосов
/ 21 февраля 2019

Поскольку каждый case в results является словарем, вы можете использовать свойство .items внутри шаблона, чтобы перебирать его ключи и значения:

{% for case in results %}
    {% for item, value in case.items %}
        {{ item }} - {{ value }}
    {% endfor %}
{% endfor %}
...