You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django ORM按store_id分组并指定日期间隔计算字段均值如何实现

实现方法

你可以通过Django ORM的filter + values + annotate组合实现需求,具体步骤如下:

首先导入需要的依赖:

from django.db.models import Avg
from datetime import date

执行查询语句:

result = MyModel.objects.filter(
    # 筛选指定日期区间的数据
    day_dt__range=(date(2021, 10, 1), date(2021, 10, 4))
# 指定按store_id分组
).values('store_id').annotate(
    # 聚合计算两个字段的平均值
    param1_avg=Avg('param1'),
    param2_avg=Avg('param2')
)

如果需要和示例一致输出整数类型的平均值,可以将聚合结果强制转换为整数,修改annotate部分即可:

from django.db.models import Avg, IntegerField
from django.db.models.functions import Cast

result = MyModel.objects.filter(
    day_dt__range=(date(2021, 10, 1), date(2021, 10, 4))
).values('store_id').annotate(
    param1_avg=Cast(Avg('param1'), output_field=IntegerField()),
    param2_avg=Cast(Avg('param2'), output_field=IntegerField())
)

返回结果说明

返回的result是可迭代的QuerySet对象,每个元素的结构为{'store_id': 'STORE1', 'param1_avg': 6, 'param2_avg': 10},和你期望的输出结构完全匹配。

内容的提问来源于stack exchange,提问作者Альберт Александров

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 21:18:01