2016-03-22 23 views
0

Django ile alışveriş sepetindeki ürünlerin toplam maliyetini takip ediyorum. Benim sorunum ilk parça takip ediliyor. Miktarı indirdiğinizde veya miktarı azalttığınızda fiyat ayarını yaparsınız. Ancak bunun altındaki herhangi bir şey toplam maliyeti DEĞİLDİR. Sorun şu ki, yanlış bir şekilde bunun üzerinden geçmiyordum, bu yüzden bir kaç saatlik başarısızlıktan sonra, ben de isteyeceğimi düşündüm.Django ile Alışveriş Sepetindeki Öğeleri Güncelleme

def cart() 

ben değerlerini güncelleyerek üye değişkenleri aracılığıyla ekleyin döngü ediyorum. Karşılıklı sorun size remove_from_cart

tıkladığında book_idcart() işleve geçirilen olmasıdır Ama bir tek o book_id bir sorunu olsaydı sepeti listesi yalnızca ilk öğeyi nasıl oluyor o zaman içinde geçirilen Aktarılan book_id ne olursa olsun değiştirilmekte?

views.py

@login_required 
def add_to_cart(request,book_id): 
    book = get_object_or_404(Book, pk=book_id) 
    cart,created = Cart.objects.get_or_create(user=request.user, active=True) 
    order,created = BookOrder.objects.get_or_create(book=book,cart=cart) 
    order.quantity += 1 
    order.save() 
    messages.success(request, "Cart updated!") 
    return redirect('cart') 


def remove_from_cart(request, book_id): 
    if request.user.is_authenticated(): 
     try: 
      book = Book.objects.get(pk = book_id) 
     except ObjectDoesNotExist: 
      pass 
     else: 
      cart = Cart.objects.get(user = request.user, active = True) 
      cart.remove_from_cart(book_id) 
     return redirect('cart') 
    else: 
     return redirect('index') 


def cart(request): 
    if request.user.is_authenticated(): 
     cart = Cart.objects.filter(user=request.user.id, active = True) 
     orders = BookOrder.objects.filter(cart=cart) 
     total = 0 
     count = 0 
     for order in orders: 
      total += order.book.price * order.quantity 
      count += order.quantity 
      context = { 
      'cart': orders, 
      'total': total, 
      'count': count, 
      } 
      return render(request, 'store/cart.html', context) 
     else: 
      return redirect('index') 

cevap

1

Kişisel girinti

def cart(request): 
    if request.user.is_authenticated(): 
     cart = Cart.objects.filter(user=request.user.id, active = True) 
     orders = BookOrder.objects.filter(cart=cart) 
     total = 0 
     count = 0 
     for order in orders: 
      total += order.book.price * order.quantity 
      count += order.quantity 
     #Indentation needs to be offset by one level from here on 
     context = { 
      'cart': orders, 
      'total': total, 
      'count': count, 
     } 
     return render(request, 'store/cart.html', context) 
    else: 
     return redirect('index') 
+0

OMG ... Böyle bir patron biraz kapalıdır. Bu bana saatlerce ve saatlerce acı verdi. Linter'ım bunu nasıl yakalayamaz? Gelecekte bundan nasıl kurtulabilirim? – wuno

+0

Bunlar maalesef sadece akışın mantıksal olarak anlaşılmasıyla yakalandı. Hata ayıklamak için, gidilecek bir yol, baskı ifadeleri kullanmak ya da 'pdb'… – karthikr

+0

Ok 'u kullanarak teşekkür ederiz. Ben yukarı bakacağım. – wuno

İlgili konular