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

时间:2019-06-29 17:40:36

标签: python django django-queryset fusioncharts

我目前使用以下代码为我的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 :(得分:0)

是的,您可以使用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(
    label=TruncMonth('session_start')
).values('label').annotate(
    value=Sum('input_input_value')
).order_by('label')

这将导致QuerySet包含字典。每个字典都有一个'label'键和一个date(..)键,该键被截断到该月份,该'value'键被映射到该月的'input_input_value'个值的和