我正在尝试计算上周客户的订单总数。我在我的视图中使用了ordered_date__range,但我的API 显示计数为零。我不确定这里有什么问题,因为我知道我的数据库中有订单。
我的观点:
class DashboardView(ListAPIView):
permission_classes = [AllowAny]
def get(self, request, *args, **kwargs):
count_1 = Order.objects.filter(order_items__item__merchant=self.kwargs['pk']).count()
......................
startdate = datetime.today() + timedelta(days=1)
enddate = startdate - timedelta(days=30)
count_8 = Order.objects.filter(order_items__item__merchant=self.kwargs['pk'],ordered_date__range=[startdate, enddate]).count()
return Response(
{'active_users_now': count_2,
'total_customers': count_9,
'total_orders': count_1,
'total_categories': count_3,
'total_subcategories' : count_6,
'total_products_available': count_4,
'total_prodcuts_sold': count_5,
'total_earnings': count_7,
'total_orders_of_the_week': count_8,
},
status=status.HTTP_200_OK)
这里如果我调用上面的api,我的计数显示为零。我只是尝试添加 2 或 3 个订单,但仍然得到零计数。
我也尝试删除这部分 order_items__item__merchant=self.kwargs['pk'],
,但结果为零。 COunt_1 完全正常。
我只是想捕获特定商家的客户在上周内下的订单。
我的模型:
class Order(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE, blank=True)
#order_items = models.ManyToManyField('OrderItem',blank=True, null=True)
order_status = models.CharField(max_length=50,choices=ORDER_STATUS,default='To_Ship')
ordered_date = models.DateTimeField(auto_now_add=True)
答案 0 :(得分:1)
您的日期范围看起来有误,因为您的 enddate
在 startdate
之前:
startdate = datetime.today() + timedelta(days=1)
enddate = startdate - timedelta(days=30)
此外,您在谈论 a week
并且您计算了 30 天。
我想应该是:
startdate = datetime.today() - timedelta(days=8)
enddate = startdate + timedelta(days=7)