购物车中更改商品数量时出错

时间:2019-08-10 13:10:28

标签: jquery django ajax

我想为我的项目添加商品更改数量功能。但是我有一个问题。可以仅更改购物车中的第一项。我如何才能更改所有商品的数量?我想我需要在单击适当的数字加号或数字减号按钮时获取有关特定购物车项目的信息?任何帮助或小费请。我是新手

这是我的模板

{% for item in cart.items.all %}
<td class="text-center cart-table-info">
   <form method="GET">
      <div class="number-style">
         <span class="number-minus disabled"></span>
         <input class="cart-item-quantity" type="number" name="quantity" value="{{ item.quantity }}" min="1" data-id="{{ item.id }}">
         <span class="number-plus"></span>
      </div>
    </form>
</td>
{% endfor %}
<script>
      $('.number-minus, .number-plus').on('click', function(){
        quantity = $('.cart-item-quantity').val()
        item_id = $('.cart-item-quantity').attr('data-id')
        data = {
          quantity: quantity,
          item_id: item_id,
        }
        $.ajax({
          type: "GET",
          url: '{% url "ecomapp:change_item_quantity" %}',
          data: data,
          success: function(data){
            $('#cart-item-total-'+item_id).html(parseFloat(data.all_items_cost).toLocaleString(undefined, {'minimumFractionDigits':2,'maximumFractionDigits':2}) + ' руб.'
              )
            $('#cart-total-price').children('strong').html(
              parseFloat(data.cart_total_price).toLocaleString(undefined,
                {'minimumFractionDigits':2,'maximumFractionDigits':2}) + ' руб.'
              )
          }
        })
      })
</script>

这是我的观点

def change_item_quantity_view(request):
    cart = getting_or_creating_cart(request)
    quantity = request.GET.get('quantity')
    item_id = request.GET.get('item_id')
    cart_item = CartItem.objects.get(id=int(item_id))
    cart_item.quantity = int(quantity)
    cart_item.all_items_cost = int(quantity) * Decimal(cart_item.item_cost)
    cart_item.save()

    new_cart_total = 0.00

    for item in cart.items.all():
        new_cart_total += float(item.all_items_cost)

    cart.cart_total_cost = new_cart_total
    cart.save()

    return JsonResponse({
        'cart_total': cart.items.count(),
        'all_items_cost': cart_item.all_items_cost,
        'cart_total_price': cart.cart_total_cost,
        })

0 个答案:

没有答案
相关问题