我有这样的购物车模型
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)
我已经使用了许多方法来检查购物车中的产品是否存在,但是在我的情况下,这些方法都不起作用。您能建议任何方法检查购物车中的产品吗?在Cart
模型中,如果quantity
不想添加数量,则默认为user
,它应该自动取1。预先感谢!
这是简单的查询。
Cart.objects.filter(user=user, product=product).exists()
您使用要检查的user
和product
。您甚至可以根据需要添加数量:
Cart.objects.filter(user=user, product=product, quantity=1).exists()
或:
Cart.objects.filter(user=user, product=product, quantity__gte=1).exists()
您还应包括尝试过的“方法”,这很有用。因为此答案很简单明了。也许,您忘了提及其他内容。
这是简单的查询。
Cart.objects.filter(user=user, product=product).exists()
您使用要检查的user
和product
。
您还应包括尝试过的“方法”,这很有用。因为此答案很简单明了。也许,您忘了提及其他内容。