формирование выходного запроса в шаблоне django - PullRequest
0 голосов
/ 02 марта 2011

Я пытаюсь вывести запрос в формате таблицы ниже в шаблоне

RAW.objects.filter(at_date__year='2011',at_date__month='02').values('user','attend').order_by().annotate(total=Count('attend'))

вывод из запроса

[{'user': u'sushanth', 'total': 13, 'attend': u'P'}, {'user': u'sushanthreddy', 'total': 2, 'attend': u'A'}, {'user': u'ram', 'total': 5, 'attend': u'P'}, {'user': u'ram', 'total': 2, 'at_attend': u'PL'}]

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

    user           P     A   PL

   sushanth        13    2   0
     ram           5     0   2

Может ли помочь в этом?

1 Ответ

0 голосов
/ 13 мая 2011

Когда вы используете предложение values, Django отправит фразу DISTINCT в SQL на основе значений, которые вы запрашиваете.Итак, вы уже получаете только различные комбинации «пользователь» и «посещаемость».

Насколько велик этот результат?Если вы просматриваете всего пару сотен строк, я бы предложил просто перебрать ваши словари в Python и создать сводный пакет.Если вы смотрите больше, чем это, то есть несколько вариантов.Вероятно, я бы порекомендовал создать сводную модель / таблицу, которая заполняется с использованием сигналов post_save, которая содержит информацию о P, A и PL для каждого пользователя и где пользователь уникален.Затем вы просто запрашиваете сводную таблицу и выплевываете свои данные.

По сути, вы создаете таблицу, которая выглядит почти так же, как ваш вывод: четыре столбца (конечно, без учета первичного ключа).Затем каждый раз, когда запись в вашей текущей таблице сохраняется, она записывает соответствующий номер в правильный столбец в сводной таблице.

...