统计当天下单量

本文介绍了一种基于Python Django框架实现的订单和充值统计数据视图的方法,包括每日订单数、订单总额、充值金额等关键指标,并展示了如何通过日期筛选进行统计。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

class PlatformData(View):
    def get(self, request):
        r = dict()
        r["errno"] = 1
        r["order_total_num"] = OrderModel.objects.all().count()
        r["product_total_num"] = ProductModel.objects.all().count()
        r["success_order"] = OrderModel.objects.filter(state=2).count()
        r["cancel_order"] = OrderModel.objects.filter(state=4).count()
        r["nopay_order"] = OrderModel.objects.filter(state=1).count()
        r["trade_amount"] = serializer(RechargeModel.objects.all().aggregate(Sum("amount")))
        return HttpResponse(json.dumps(r))


class DailyAmount(View):
    def get(self, request):
        daily_list = []
        for i in range(0, 31):
            dtime = datetime.datetime.today() - datetime.timedelta(days=i)
            daily_dict = {}
            dailyAmount = serializer(
                RechargeModel.objects.filter(trade_no__month=dtime.month, trade_no__day=dtime.day).aggregate(
                    damount=Sum('amount')))
            amount = dailyAmount.pop('damount')
            timestamp = time.mktime(dtime.timetuple())
            daily_dict[timestamp] = amount
            daily_list.append(daily_dict)
        return HttpResponse(json.dumps(daily_list))


class TayAmount(View):
    def get(self, request):
        today = datetime.datetime.today().day
        tomonth = datetime.datetime.today().month
        tAmount = serializer(RechargeModel.objects.filter(trade_no__month=tomonth, trade_no__day=today).
                             aggregate(todayAmount=Sum('amount')))
        yesterday = datetime.datetime.now() - datetime.timedelta(days=1)
        tomonth = yesterday.month
        today = yesterday.day
        yAmount = serializer(
            RechargeModel.objects.filter(trade_no__month=tomonth, trade_no__day=today).values(
                'amount').aggregate(yesterdayAmount=Sum('amount')))
        tAmount.update(yAmount)
        return HttpResponse(json.dumps(tAmount))


class DailyNum(View):
    def get(self, request):
        daily_list = []
        r = dict()
        for i in range(0, 31):
            dtime = datetime.datetime.today() - datetime.timedelta(days=i)
            daily_dict = {}
            dailyNum = serializer(
                OrderModel.objects.filter(date_created__month=dtime.month, date_created__day=dtime.day).count())
            timestamp = time.mktime(dtime.timetuple())
            daily_dict[int(timestamp)] = dailyNum
            daily_list.append(daily_dict)
        r["errno"] = 1
        r["daily_list"] = daily_list
        return HttpResponse(json.dumps(r))


class TayNum(View):
    def get(self, request):
        today = datetime.datetime.today().day
        tomonth = datetime.datetime.today().month
        tCount = serializer(OrderModel.objects.filter(date_created__month=tomonth, date_created__day=today).count())
        yesterday = datetime.datetime.now() - datetime.timedelta(days=1)
        tomonth = yesterday.month
        today = yesterday.day
        yCount = serializer(
            OrderModel.objects.filter(date_created__month=tomonth, date_created__day=today).count())
        r = dict()
        r['errno'] = 1
        r['todayNum'] = tCount
        r['yesterdayNum'] = yCount
        return HttpResponse(json.dumps(r))

 

  

models 

 

date_created = models.DateTimeField(default=timezone.now, verbose_name='订单创建时间')

 

views

orderAmount = serializer(
        OrderModel.objects.values(time=TruncDay('date_created')).annotate(num=Count('id')))  (查出来是字典的格式,time是key对应时间戳,num是key对应的是数量)

  

 

转载于:https://www.cnblogs.com/sunkai1993/p/7543544.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值