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

标签 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?

最佳答案

是的,您可以使用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/

相关文章:

python - 从 lambda 连接到 Redshift 并使用 python 获取一些记录

python - 我应该循环调用 WinAPI 的发送函数吗

python - 从键元组创建嵌套 Python 字典

python - 如何在 django admin 中处理这种特殊情况?

python - Stackdriver 调试 appengine 错误 : python module not found

python - 接受额外字段的 Django 验证函数

mysql - django 通过内表过滤器选择数据

python - Django:更改查询集中所有对象的字段值

django - 将字段列表传递给 QuerySet.values()

django - 查询集的高效周统计