Добавить товар в корзину django rest framework - PullRequest
0 голосов
/ 07 марта 2019

Как сделать конечную точку для добавления товара в корзину с помощью django rest framework? Я искал везде и не мог найти. Не могли бы вы помочь мне, пожалуйста?

Это мои продукты. Просмотров:

class ProductDetail(generics.RetrieveAPIView):
    queryset = Product.objects.all()
    serializer_class = ProductSerializer


class AddProduct(ProductDetail, ListCreateApiView):
    serializer_class = AddToCartSerializer

    @require_POST
    def get(self, request):
        cart_obj = Cart.objects.get_or_new(request)
        product_id = request.POST.get('product_id')
        qs = Product.objects.filter(id=product_id)
        if qs.count() == 1:
            product_obj = qs.first()
            if product_obj not in cart_obj.products.all():
                cart_obj.products.add(product_obj)
            else:
                cart_obj.products.remove(product_obj)
            request.session['cart_items'] = cart_obj.products.count()
        return Response(status=status.HTTP_200_OK, data={'message': 'Product has been added to cart'})

serializers.py

class ProductSerializer(serializers.HyperlinkedModelSerializer):

    class Meta:
        model = Product
        fields = ('url', 'id', 'title', 'description',
                  'category', 'price', 'quantity',
                  'in_stock', 'color')


class AddToCartSerializer(serializers.ModelSerializer):

    class Meta:
        model = Product
        fields = ('id',)

1 Ответ

0 голосов
/ 07 марта 2019

Я написал эту функцию, и она работает. Но я не могу контролировать количество товаров, добавляемых в корзину

class ProductDetail(generics.RetrieveAPIView):
    queryset = Product.objects.all()
    serializer_class = ProductSerializer


class AddProduct(ProductDetail, viewsets.ModelViewSet):

    @action(detail=True, methods=['post'])
    def add_to_cart(self, request, pk):
        cart_obj = Cart.objects.get_or_new(request)
        product_id = pk
        qs = Product.objects.filter(id=product_id)
        if qs.count() == 1:
            product_obj = qs.first()
            if product_obj not in cart_obj.products.all():
                cart_obj.products.add(product_obj)
            else:
                cart_obj.products.remove(product_obj)
            request.session['cart_items'] = cart_obj.products.count()
        return Response(status=status.HTTP_200_OK, data={'message': 'Product has been added to cart'})
...