【发布时间】:2020-02-21 12:02:49
【问题描述】:
我有一个这样的购物车模型
class Cart(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, null=True)
product = models.ForeignKey(Product, on_delete=models.CASCADE, related_name='items', null=True)
quantity = models.PositiveIntegerField(default=1)
serializers.py
class CartSerializer(serializers.ModelSerializer):
image = serializers.ImageField(source='product.image', read_only=True)
name = serializers.CharField(source='product.name', read_only=True)
price = serializers.DecimalField(source='product.price', read_only=True, max_digits=10, decimal_places=2)
class Meta:
model = Cart
fields = ['id', 'user', 'product', 'image', 'name', 'price', 'quantity']
views.py
class CartApiView(generics.ListCreateAPIView):
queryset = Cart.objects.all()
serializer_class = CartSerializer
def post(self, request, pk=None, *args, **kwargs):
serializer = CartSerializer(data=request.data)
if serializer.is_valid():
product = Product.objects.get(pk=request.data['product'])
#quantity = int(request.data['quantity'])
while Cart.objects.filter(product=product).exists():
quantity += 1
serializer.save(user=self.request.user)
return Response(serializer.data)
在将产品添加到我的购物车之前,我想检查一下该产品是否存在。如果存在,它应该更新数量,如果没有新的购物车项目应该添加到购物车。简而言之,首先我应该在添加之前检查。但在此模型中,quantity 具有默认值。如果用户不添加数量,它应该 1. 我该如何编写这个方法?提前致谢!
【问题讨论】:
标签: python django django-models django-rest-framework