【发布时间】:2016-03-22 23:26:25
【问题描述】:
我正在使用 Django 跟踪购物车中物品的总成本。我的问题是第一个项目被跟踪。当您减少数量或减少数量时,价格会调整。但是低于它的任何东西都不会调整总成本。我认为问题在于我没有错误地循环遍历它,所以经过数小时的失败后,我想我会问。
在
def cart()
我正在循环成员变量添加更新
他们的价值观。我面临的问题是,当您单击remove_from_cart 时,只有book_id 被传递给cart() 函数
但如果是只传入一个book_id 的问题,那么无论传入的book_id 是什么,为什么只更改购物车列表中的第一项?
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')
【问题讨论】: