0
点赞
收藏
分享

微信扫一扫

django官方orm语句按月份分组

django官网提供的一个orm语法

from django.db.models.functions import TruncMonth
Sales.objects
.annotate(month=TruncMonth('timestamp')) # Truncate to month and add to select list
.values('month') # Group By month
.annotate(c=Count('id')) # Select the count of the grouping
.values('month', 'c') # (might be redundant, haven't tested) select month and count

实际应用:

# 3、按照年月统计所有文章
date_list = models.Article.objects.filter(blog=blog_obj).annotate(month=TruncMonth('create_time')).values('month').annotate(c=Count('id')).values_list('month', 'c')

分解:
date_list = models.Article.objects.filter(blog=blog_obj) 拿到queryset对象
.annotate(month=TruncMonth('create_time')) 按照月份分组(指定时间字段)
.values('month') 拿到按月份分组后的数据
.annotate(c=Count('id')) 根据id或者pk字段统计(主键字段)
.values_list('month', 'c') 拿到月份分组,和统计数量


举报

相关推荐

0 条评论