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
相关产品推荐
相关产品推荐

