Преобразовать QuerySet с полем вычисления в один или несколько базовых элементов json из ключа - PullRequest
0 голосов
/ 26 сентября 2018

Я пытаюсь преобразовать QuerySet в json для использования с chartjs, но у меня есть некоторые проблемы с преобразованием.Например:

_queryset = CheckOut.objects.filter(date_service__year = this_year).values_list('date_service__month').\
    annotate(total=Sum('profit')).order_by('date_service__month')

dt = _queryset

, если вывести эту переменную " dt ", в шаблоне {{ dt }} У меня есть эти значения, напечатанные

<QuerySet [(8, Decimal('300.00')), (9, Decimal('729.00'))]>

Как мне сделать, чтобыразделите: месяц и всего (из аннотации) в двух json, например:

[8,9] <- month

[300, 729] <- total price

1 Ответ

0 голосов
/ 26 сентября 2018

Поскольку данные представляют собой список пар ключ / значение, вы можете создать словарь, а затем извлечь значения, используя методы keys() и values().Использование OrderedDict обеспечит сохранение порядка.

Например:

from collections import OrderedDict

_queryset = CheckOut.objects.filter(date_service__year = this_year).values_list('date_service__month').\
    annotate(total=Sum('profit')).order_by('date_service__month')

dt = OrderedDict(_queryset)  # Wrap queryset with an OrderedDict

extracted = {
    'months': list(dt.keys()),  # Extract the list of months
    'totals': list(dt.values()) # Extract the list of totals
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...