Python Django Queryset 仅从日期获取月份和年份

Python Django Queryset only get month and year from date

我目前使用以下代码为我的 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 中获取月份和年份,但现在它只显示填写内容的每个日期的每个月份和年份。

有没有一种方法可以设计查询集,它每月对不同的值求和(按降序排列)?这样图表只显示三个柱:04.2019、05.2019 和 06.2019?

可以,可以注释总结,使用TruncMonth [Django-doc], and 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(..) 对象,以及一个映射到该月 'input_input_value' 值总和的 'value' 键.