django按照小时,天数,月份,年份分组

小时:

from django.db.models.functions import TruncDay, TruncHour, TruncMonth
hours = User.objects.filter(is_staff=False, date_joined__range=(t_day, now_time)).annotate(
                hour=TruncHour('date_joined')).values('hour').annotate(count=Count('id'))

天数:

# 返回月新增用户量
t_month = Public_func().month_first_day(now_time)  # 返回当月第一天的零点零分
day = User.objects.filter(is_staff=False, date_joined__range=(t_month, now_time)).annotate(
                day=TruncDay('date_joined')).values('day').annotate(count=Count('id'))

季度:

# 返回季度新增用户量
            time_list = Public_func().return_season_time(now_time)  # 返回当年每个季度的第一天
            first_season_count = User.objects.filter(is_staff=False,date_joined__range=(time_list[0], now_time)).filter(
                date_joined__month__in=[1, 2, 3]).count()
            two_season_count = User.objects.filter(is_staff=False, date_joined__range=(time_list[1], now_time)).filter(
                date_joined__month__in=[4, 5, 6]).count()
            three_season_count = User.objects.filter(is_staff=False,date_joined__range=(time_list[2], now_time)).filter(
                date_joined__month__in=[7, 8, 9]).count()
            four_season_count = User.objects.filter(is_staff=False, date_joined__range=(time_list[3], now_time)).filter(
                date_joined__month__in=[10, 11, 12]).count()

年份:

month = User.objects.filter(is_staff=False, date_joined__range=(t_year, now_time)).annotate(
                month=TruncMonth('date_joined')).values('month').annotate(count=Count('id'))

返回结果:

"increased_user_list": [
            {
                "month": "2020-01-01 00:00:00",
                "count": 0
            },
            {
                "month": "2020-02-01 00:00:00",
                "count": 0
            },
            {
                "month": "2020-03-01 00:00:00",
                "count": 0
            },
            {
                "month": "2020-04-01 00:00:00",
                "count": 7
            },
            {
                "month": "2020-05-01 00:00:00",
                "count": 24
            },
            {
                "month": "2020-06-01 00:00:00",
                "count": 11
            },
            {
                "month": "2020-07-01 00:00:00",
                "count": 5
            },
            {
                "month": "2020-08-01 00:00:00",
                "count": 0
            }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值