【发布时间】:2021-02-25 07:53:23
【问题描述】:
在上图中,当点击继续结账时,所有 3 个不同数量的不同商品都在一个 API 调用中作为 createorder 发送。我不知道如何在 DB 中一次保存所有这些对象。
我写的内容如下:
我的模型:
class OrderItem(models.Model) :
user = models.ForeignKey(User,on_delete=models.CASCADE, blank=True)
ordered = models.BooleanField(default=False)
item = models.ForeignKey(Product, on_delete=models.CASCADE,blank=True, null=True)
quantity = models.IntegerField(default=1)
def __str__(self):
return f"{self.quantity} items of {self.item} of {self.user.email}"
class Order(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE, blank=True)
items = models.ManyToManyField(OrderItem,blank=True, null=True)
start_date = models.DateTimeField(auto_now_add=True)
ordered_date = models.DateTimeField()
ordered = models.BooleanField(default=False)
billing_details = models.ForeignKey('BillingDetails',on_delete=models.CASCADE,null=True,related_name="order")
def __str__(self):
return self.user.email
我的观点:(虽然它不适用于业务逻辑)
#class AddtoOrderItemView(APIView):
#permission_classes = [IsAuthenticated]
# def post(self, request, pk):
# item = get_object_or_404(Product, pk=pk)
# order_item, created = OrderItem.objects.get_or_create(
# item=item,
# user=self.request.user,
# ordered=False
# )
# order_qs = Order.objects.filter(user=self.request.user, ordered=False)
#
# if order_qs.exists():
# order = order_qs[0]
#
# if order.items.filter(item__pk=item.pk).exists():
# order_item.quantity += 1
# order_item.save()
# return Response({"message": "Quantity is added",
# },
# status=status.HTTP_200_OK
# )
# else:
# order.items.add(order_item)
# return Response({"message": " Item added to your cart", },
# status=status.HTTP_200_OK,
# )
# else:
# ordered_date = datetime.now()
# order = Order.objects.create(user=self.request.user, ordered_date=ordered_date)
# order.items.add(order_item)
# return Response({"message": "Order is created & Item added to your cart", },
# status=status.HTTP_200_OK,
# )
我已经评论过了。但这就是我试图建立的。首先,创建一个订单项,然后创建最后创建订单。但是,正如我上面提到的,业务需求是另一回事。
我的网址:
path('api/addorderitem/<int:pk>', views.AddtoOrderItemView.as_view(), name='api-add-orderitem'),
我在这里调用 api/addorderitem/int:pk,每次都为每个产品添加 orderitems,但前端说要在一个 api 中一次发送所有项目。该怎么做??
【问题讨论】:
标签: python django api django-rest-framework view