[英]How do I add to cart more than one of the same item in the serializer (post)?
我正在尝试制作这个应用程序,在那里我可以 select 我想购买的物品。 例如,我想将两个蛋糕添加到购物车中,但到目前为止我不能 select 超过一个。 我怎么做? 我需要更改的字段是“食物”,因为该字段具有“蛋糕”、“糕点”等选项。我希望用户能够根据需要添加任意数量的每个项目。 我尝试了 many=True 但有些事情没有解决。
到目前为止,这是序列化程序:
class OrderSerializer(serializers.ModelSerializer):
class Meta:
model = Order
fields = '__all__'
class FoodSerializer(serializers.ModelSerializer):
class Meta:
model = Food
fields = '__all__'
这是 model:
class Food(models.Model):
name = models.CharField(max_length=100, unique=True)
def __str__(self):
return self.name
class Order(models.Model):
food = models.ManyToManyField('Food', related_name='order', blank=True)
def __str__(self):
return self.food
您需要添加 model ,您可以在其中添加可以订购的商品数量:
class OrderFood(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL,
on_delete=models.CASCADE)
ordered = models.BooleanField(default=False)
item = models.ForeignKey(Item, on_delete=models.CASCADE)
quantity = models.IntegerField(default=1)
def __str__(self):
return f"{self.quantity} of {self.item.title}"
然后您可以在视图中的订单中添加或删除项目(或食物类型):
class AddToCartView(APIView):
def post(self, request, *args, **kwargs):
item_id = request.data.get('id', None)
if item_id is None:
return Response({"message": "Invalid request"}, status=HTTP_400_BAD_REQUEST)
item = get_object_or_404(Item, id=item_id)
order_item = OrderFood.objects.filter(item=item,user=request.user)
if order_item.exists():
order_item = order_item.first()
order_item.quantity += 1
order_item.save()
else:
order_item = OrderFood.objects.create(item=item,user=request.user)
order_item.save()
不是 100% 确定代码,您需要验证它,希望对您有所帮助
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.