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

Django查询集统计唯一日期数量的实现方法

解决Django QuerySet统计唯一日期数量的问题

嘿,这就帮你把代码补全!你的思路已经对了一半——用TruncDate把DateTimeField类型的created_at截断成纯日期,再按日期分组,最后只要统计分组的数量就能得到唯一日期的个数了。

这里有两种简洁的实现方式:

方式一:分组后直接统计数量

这种方式先按日期分组,最后调用count()获取分组的总数:

from django.db.models import Count
from django.db.models.functions import TruncDate

unique_days_count = queryset.annotate(date=TruncDate('created_at')) \
    .values('date') \
    .count()

方式二:显式去重后统计

如果你想更直观地体现“去重”的逻辑,可以加上distinct():

from django.db.models import Count
from django.db.models.functions import TruncDate

unique_days_count = queryset.annotate(date=TruncDate('created_at')) \
    .values('date') \
    .distinct() \
    .count()

两种方法都能得到你预期的结果(比如示例里的2)。原理是:TruncDate('created_at')会把每个记录的时间字段转换成对应的日期对象,values('date')会按日期对记录进行分组,之后的count()就会返回分组的数量——也就是唯一日期的个数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:22:17