我当前使用以下代码为我的 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]进行注释和总结。 ,和 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'
值的总和。
关于Python Django Queryset 仅从日期获取月份和年份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56819589/