我有一个多供应商的电子商务网站,其中卖方 Jmeter 板,我必须计算已购买该商家产品的客户数量.我试过了,但不正确。
我把我的逻辑写在我的观点中,如下所示:
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()
count_2 = Token.objects.filter(user__is_customer=True).count()
# Having problem in this count_9
count_9 = Order.objects.annotate(abc=Count('user')).filter(order_items__item__merchant=self.kwargs['pk']).count()
return Response(
{'active_users_now': count_2,
'total_customers': count_9,
'total_orders': count_1,
},
status=status.HTTP_200_OK)
我的模特:
class Order(models.Model):
...............
user = models.ForeignKey(User, on_delete=models.CASCADE, blank=True)
class OrderItem(models.Model):
...................#other fields
order = models.ForeignKey(Order,on_delete=models.CASCADE, blank=True,null=True,related_name='order_items')
item = models.ForeignKey(Product, on_delete=models.CASCADE,blank=True, null=True)
Class Product(models.Model):
............
merchant = models.ForeignKey(Seller,on_delete=models.CASCADE,blank=True,null=True)
我有两个用户模型,分别是客户和卖家。我实际上需要找出购买某个卖家产品的客户数量。
卖家和客户是一对一的,与我的CustomUser模型相关:
class Seller(models.Model):
................
seller = models.OneToOneField(
settings.AUTH_USER_MODEL, on_delete=models.CASCADE, blank=True, null=True)
class Customer(models.Model):
...............
customer = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, blank=True, null=True)
我只需要编写正确的SQL连接来确定计数。
第二个问题是:
我需要写一个API来查看所有购买了该特定卖家产品的客户的详细信息。但是,如果我们可以写我的第一个问题,我们也可以写这个。
1条答案
按热度按时间v1l68za41#
我猜,它不起作用的原因之一是你过滤的是
merchant=self.kwargs['pk']
而不是merchant_id=self.kwargs['pk']
。一种可能的解决办法是: