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

Django中如何查询并返回当月每日销售的订单量及销售额统计

Django 当月每日销售数据统计实现方案

首先导入需要的依赖:

from django.db.models import F, Sum, Count
from django.db.models.functions import ExtractDay
from datetime import datetime
# 若项目开启时区支持,用下面的导入代替datetime
# from django.utils import timezone

函数实现如下:

def get_current_month_daily_sales():
    # 取当前时间,开启时区支持则替换为 timezone.now()
    now = datetime.now()
    # 筛选当月所有订单
    monthly_orders = Order.objects.filter(
        created__year=now.year,
        created__month=now.month
    )
    # 按天分组统计
    daily_sales = monthly_orders.annotate(
        day=ExtractDay('created')
    ).values('day').annotate(
        count=Count('id'),
        total=Sum(F('price') * F('quantity'))
    ).order_by('day')
    return daily_sales

逻辑说明

  • 动态取当前年月过滤订单,进入下一月后会自动切换统计范围,不需要手动修改规则
  • 用ExtractDay提取订单创建时间的日期值作为分组维度
  • Count('id')统计对应日期的订单总数量,Sum(F('price') * F('quantity'))计算对应日期的销售总额,F表达式用来直接取单条订单的商品单价和数量做乘积运算
  • 最终返回结果的格式和你期望的完全一致,每日新增的订单会自动对应到所属日期的统计项中,无订单的日期默认不会出现在结果中,若需要展示无订单日期的0值统计,可自行生成当月完整日期列表和查询结果做合并处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 15:24:10