Товары добавляются в корзину кратно 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)