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

Django查询指定日期范围内每日售出商品总金额与销量的实现方法

Django 订单按日统计实现方案

推荐方案:使用Django ORM自带聚合能力实现(效率最优)

你无需手动遍历所有订单计算,直接通过ORM的日期截断+分组聚合能力即可直接得到按日统计的结果,步骤如下:

  1. 首先导入需要的工具类
from django.db.models import Sum
from django.db.models.functions import TruncDate
  1. 替换原有查询和统计逻辑
# 过滤指定时间范围内的订单,按日期分组统计
daily_order_stats = models.Order.objects.filter(
    purchasedate__range=[from_date, to_date]
).annotate(
    # 将datetime类型的购买时间截断为日期格式
    date = TruncDate("purchasedate")
).values("date").annotate(
    # 按日期聚合当日总销量、总销售额
    count = Sum("quantity"),
    total_price_sold = Sum("price")
).order_by("date")

# 如需统一格式(比如金额保留两位小数、日期转字符串)可以额外处理
formatted_stats = []
for item in daily_order_stats:
    formatted_stats.append({
        "date": item["date"].strftime("%Y-%m-%d"),
        "count": int(item["count"]),
        "total_price_sold": float("%.2f" % item["total_price_sold"])
    })

# 返回响应
return response.Response({
    "from_date": from_date,
    "to_date": to_date,
    "daily_stats": formatted_stats
})

返回结果示例:

{
    "from_date": "2021-11-19",
    "to_date": "2021-11-23",
    "daily_stats": [
        {
            "date": "2021-11-19",
            "count": 2,
            "total_price_sold": 5000.00
        },
        {
            "date": "2021-11-20",
            "count": 4,
            "total_price_sold": 12000.00
        }
    ]
}

可选扩展:补全时间范围内无订单的日期

如果你需要时间范围内所有日期都返回,哪怕当日没有订单也返回count=0、total_price_sold=0,可新增日期补全逻辑:

from datetime import timedelta

# 生成起始到结束的所有日期列表
all_dates = []
current_date = from_date
while current_date <= to_date:
    all_dates.append(current_date)
    current_date += timedelta(days=1)

# 将统计结果转成字典方便匹配
stats_dict = {item["date"]: item for item in daily_order_stats}

# 补全所有日期
formatted_stats = []
for d in all_dates:
    stat = stats_dict.get(d, {"count": 0, "total_price_sold": 0})
    formatted_stats.append({
        "date": d.strftime("%Y-%m-%d"),
        "count": int(stat["count"]),
        "total_price_sold": float("%.2f" % stat["total_price_sold"])
    })

内容的提问来源于stack exchange,提问作者RAGHUL R

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 05:06:03