我目前使用以下代码为我的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?
答案 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'
个值的和