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'
键.
我目前使用以下代码为我的 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'
键.