Python Django Queryset получает только месяц и год от даты - PullRequest
1 голос
/ 29 июня 2019

В настоящее время я использую следующий код для создания набора запросов для моей гистограммы Fusioncharts:

 dataSourceBar['data'] = [] 

    objects_with_category_id_2 = dashboard_input.objects.filter(service_service_id=3,category_category_id=2)

    for obj in objects_with_category_id_2:
        data =  {'label': obj.session_start.strftime("%m.%Y"),
                 'value': obj.input_input_value}
        dataSourceBar['data'].append(data)  

Я пытался получить только месяц и год из session_start, но теперь он показывает только каждый месяц и годна дату что-то заполнено.

enter image description here

Есть ли способ, которым я могу разработать набор запросов, чтобы он суммировал различные значения за месяц (по убыванию)порядок)?Так что на графике показаны только три бара: 04.2019, 05.2019 и 06.2019?

1 Ответ

0 голосов
/ 29 июня 2019

Да, вы можете комментировать и суммировать, используя TruncMonth [Django-doc] и Sum [Django-doc] :

from django.db.models import Sum
from django.db.models.functions import TruncMonth

dashboard_input.objects.filter(
    service_service_id=3,
    category_category_id=2
).annotate(
    <b>label=TruncMonth('session_start')</b>
).values('label').annotate(
    <b>value=Sum('input_input_value')</b>
).order_by(<b>'label'</b>)

В результате получится QuerySet, который обернет словари.Каждый словарь имеет ключ 'label', который сопоставляется с объектом date(..), усеченным до месяца, и ключ 'value', который сопоставляется с суммой значений 'input_input_value' за этот месяц.

...