1

TypeError("'%s' instance expected, got %r" % ( TypeError: 'CartItem' instance expected, got 我在尝试从 cartItem 添加或删除产品 obj 时收到此错误。帮助我克服此错误。 购物车更新视图

def cart_update(request):
product_id = request.POST.get('product_id')
print(product_id)
try:
    qty = request.POST.get('qty')
    update_qty = True
except:
    qty = None
    update_qty = False

if product_id is not None:
    try:
        product_obj = Product.objects.get(id=product_id)
    except Product.DoesNotExist:
        print("Show message to user, product is gone?")
        return redirect("cart:cart")

    cart_obj, new_obj = Cart.objects.new_or_get(request)
    cart_item, created = CartItem.objects.get_or_create(cart=cart_obj, product=product_obj)
    if created:
        print("created")
    if update_qty and qty:
        if int(qty) == 0:
            cart_item.delete()
        else:
            cart_item.quantity = qty
            cart_item.save()
    else:
        pass
    if product_obj in cart_obj.cartitem_set.all():
        cart_obj.cartitem_set.remove(product_obj)
        added = False
    else:
        cart_obj.cartitem_set.add(product_obj) 
        added = True

    new_total = 0.0
    for x in cart_obj.cartitem_set.all():
        line_item = float(x.product.price) * x.quantity
        new_total += line_item

    request.session['cart_items'] = cart_obj.cartitem_set.count()
    cart_obj.subtotal = new_total
    if cart_obj.subtotal > 0:
        cart_obj.total = Decimal(cart_obj.subtotal) * Decimal(1.08)
    else :
        cart_obj.total = 0.00
    cart_obj.save()
4

0 回答 0