Товары добавляются в корзину кратно 3 в Django

Я создаю сайт электронной коммерции на Django, но проблема в том, что когда я добавляю товар в корзину, количество устанавливается 3, а не 1. и когда я увеличиваю количество, нажав еще раз. Количество становится 6 вместо 2 и так далее.

Ниже приведен код из cart.html для добавления и удаления товаров из корзины.

                    <div class="li-cartstyle cartbodyinformation-quantity">
                        <p class="quantity-input">{{item.quantity}}</p>
                        <div class="cartquantity-buttons">
                            <i data-product={{item.product.id}} data-action="add" class="update-cart change-quantity fa-solid fa-angle-up"></i>
                            <i data-product={{item.product.id}} data-action="remove" class="update-cart change-quantity fa-solid fa-angle-down"></i>
                        </div>
                    </div>

и ниже приведен код из cart.js

                    var updateBtns = document.getElementsByClassName('update-cart')

                var user = isAuthenticated ? 'AuthenticatedUser' : 'AnonymousUser';

                for(var i=0; i < updateBtns.length; i++){
                    updateBtns[i].addEventListener('click', function(){
                        var productId = this.dataset.product
                        var action = this.dataset.action
                        console.log('productId:', productId, '\naction: ', action)

                        console.log('USER: ',user)

                        if(user === 'AnonymousUser'){
                            addCookieItem(productId, action)
                        }
                        else{
                            updateUserOrder(productId, action)
                        }
                    })
                }

                function addCookieItem(productId, action){
                    console.log('Not Logged in')

                    if (action == 'add'){
                        if (cart[productId] == undefined){
                            cart[productId] = {'quantity': 1}
                        }
                        else {
                            cart[productId]['quantity'] += 1
                        }
                    }

                    if (action == 'remove'){
                        cart[productId]['quantity'] -= 1

                        if (cart[productId]['quantity'] <= 0){
                            console.log('Remove Item')
                            delete cart[productId]
                        }
                    }

                    console.log('Cart:', cart)
                    document.cookie = 'cart=' + JSON.stringify(cart) + ";domain=;path=/"
                    location.reload()
                }


                function updateUserOrder(productId, action){
                    console.log('User is logged in, sending data..')

                    var url = '/update_item/'

                    fetch(url, {
                        method:'POST',
                        headers:{
                            'Content-Type':'application/json',
                            'X-CSRFToken': csrftoken,
                        },
                        body:JSON.stringify({'productId': productId, 'action': action  })
                    })

                    .then((response) => {
                        return response.json()
                    })

                    .then((data) => {
                        console.log('data:', data)
                        location.reload()
                    })
                }

и ниже приведен мой views.py

def cart(request):
    data = cartData(request)
    cartItems = data['cartItems']
    order = data['order']
    items = data['items']

    context = {'items':items, 'order':order, 'cartItems':cartItems}
    return render(request, 'store/cart.html', context)

def updateItem(request):
data = json.loads(request.body)
productId = data['productId']
action = data['action']

print('Action:', action)
print('productId:', productId)


customer = request.user.customer
product = Product.objects.get(id=productId)
order, created = Order.objects.get_or_create(customer=customer, complete=False)

orderItem, created = OrderItem.objects.get_or_create(order=order, product=product)

if action == 'add':
    orderItem.quantity = (orderItem.quantity + 1)
elif action == 'remove':
    orderItem.quantity = (orderItem.quantity - 1)

orderItem.save()

if orderItem.quantity <= 0:
    orderItem.delete()

return JsonResponse('Item was added', safe=False)
Вернуться на верх