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

Django TemplateView 按月统计条目未聚合 CreateView中相同代码正常运行

问题原因

聚合失效和视图继承类型无关,属于Django ORM分组查询的常见问题:若Item模型的Meta类配置了ordering默认排序规则,Django会自动将排序字段加入GROUP BY子句,破坏原本仅按月份分组的逻辑,导致每个条目被单独拆分为分组,所有统计值均为1。此外Item模型包含assigned_to多对多字段,关联查询产生的重复行也会干扰统计结果。
测试项目的Movie模型未配置默认排序规则,因此不会出现分组字段被额外追加的问题,统计逻辑正常。

解决方案

修改主项目views.py中的统计查询逻辑,主动覆盖默认排序、对计数去重即可:

context['per_month'] = Item.objects.annotate(
    month=TruncMonth('date_posted')
).values('month').annotate(
    c=Count('id', distinct=True)
).values('month', 'c').order_by('month')

修改完成后运行即可得到按月聚合的正确统计结果。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 03:15:00