Ich verfolge die Gesamtkosten von Artikeln in einem Einkaufswagen mit Django. Mein Problem ist, dass der erste Gegenstand verfolgt wird. Wenn Sie die Menge abziehen oder die Menge reduzieren, passen Sie den Preis an. Aber alles, was darunter liegt, passt NICHT die Gesamtkosten an. Ich denke, das Problem ist, dass ich es nicht falsch durchlaufe. Nach vielen Stunden des Scheiterns dachte ich, dass ich fragen würde.Artikel in einem Einkaufswagen mit Django aktualisieren
In
def cart()
ich durch die Membervariablen am Looping add Aktualisierung ihre Werte. Das Problem, das ich bin vor ist, dass nur die book_id
an die cart()
Funktion übergeben wird, wenn Sie remove_from_cart
klicken Aber wenn es ein Problem von nur einem book_id
ist in dann weitergegeben werden, wie nur das erste Element kommt in der Korbliste ist unabhängig von der book_id
geändert wird, die übergeben wird?
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')
omg ... Du bist so ein Chef. Dies verursachte mir stundenlange Trauer. Wie kann mein Linter das nicht fangen? Wie kann ich das in Zukunft vermeiden? – wuno
Diese werden leider nur gefangen, indem man den Ablauf logisch versteht. Um zu debuggen, gibt es eine Möglichkeit, print-Anweisungen zu verwenden oder 'pdb' zu verwenden ... – karthikr
Ok danke. Ich werde das nachsehen. – wuno