如何检查购物车中的物品是否存在

问题描述 投票:0回答:1

我有这样的购物车模型

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。预先感谢!

python django django-models django-rest-framework
1个回答
0
投票

这是简单的查询。

Cart.objects.filter(user=user, product=product).exists()

您使用要检查的userproduct。您甚至可以根据需要添加数量:

Cart.objects.filter(user=user, product=product, quantity=1).exists()

或:

Cart.objects.filter(user=user, product=product, quantity__gte=1).exists()

您还应包括尝试过的“方法”,这很有用。因为此答案很简单明了。也许,您忘了提及其他内容。


0
投票

这是简单的查询。

Cart.objects.filter(user=user, product=product).exists()

您使用要检查的userproduct

您还应包括尝试过的“方法”,这很有用。因为此答案很简单明了。也许,您忘了提及其他内容。

© www.soinside.com 2019 - 2024. All rights reserved.