【发布时间】:2021-05-23 08:58:44
【问题描述】:
我有一个多供应商电子商务网站,我必须在卖家仪表板中计算购买了该商家产品的客户数量。我已经尝试过,但它不正确。
我在我的观点中写了我的逻辑如下:
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)
我有两个用户模型,分别是客户和卖家。我实际上需要找出购买了特定卖家产品的客户数量。
Seller 和 Customer 与我的 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 来查看所有购买了该特定卖家产品的客户的详细信息。但是,如果我们可以写我的第一个问题,我们也可以写这个。
【问题讨论】:
标签: python django api join django-rest-framework