[英]Django Cart Model with products - implementing quantity of items
我有一個購物車,一個產品和一個輸入模型。 我想做的就是讓用戶可以選擇在購物車中放入多於一件的商品,並在結帳時顯示數量。 我可以得到選擇的數量
quantity_input= request.POST.get('quantity-field')
並在cart_update()中創建一個新的Entry對象
Entry.objects.create(cart=cart_obj, product=product_obj, quantity=quantity_form)
知道它屬於哪個購物車和產品。 但是后來我碰壁了,因為我只將cart_obj作為上下文,不知道如何另外渲染入口對象,因此在視圖上輸出它。
class Cart(models.Model):
user = models.ForeignKey(User, null=True, blank=True)
products = models.ManyToManyField(Product, blank=True)
subtotal = models.DecimalField(default=0.00, decimal_places=2, max_digits=100)
total = models.DecimalField(default=0.00, decimal_places=2, max_digits=100)
count = models.PositiveIntegerField(default=0)
objects = CartManager()
class Entry(models.Model):
product = models.ForeignKey(Product, null=True)
eCart = models.ForeignKey(Cart, null=True)
quantity = models.PositiveIntegerField()
@receiver(post_save, sender=Entry)
def update_cart(sender, instance, **kwargs):
line_cost = instance.quantity * instance.product.price
instance.cart.count = int(instance.cart.count) + int(instance.quantity)
def cart_update(request):
product_id = request.POST.get('product_id')
quantity_input= request.POST.get('quantity-field')
if product_id is not None:
cart_obj, new_obj = Cart.objects.new_or_get(request)
Entry.objects.create(cart=cart_obj, product=product_obj, quantity=quantity_input)
cart_obj.products.add(product_obj)
added = True
request.session['cart_items'] = cart_obj.products.count()
return redirect("carts:home")
def cart_home(request):
cart_obj, new_obj = Cart.objects.new_or_get(request)
return render(request, "carts/home.html",{"cart":cart_obj})
感謝幫助。
如果我理解了問題的第一部分,那么您想知道如何在return render(request, "carts/home.html",{"cart":cart_obj})
的上下文部分中傳遞多個內容。
一種方法是將所需的所有模板變量存儲在dict中,然后將dict作為上下文傳遞,如下所示:
template_vars = {
'cart': cart_obj,
'entry': entry_obj,
'some_var': some_value,
}
return render(request, "carts/home.html", template_vars)
或者,您可以按照現在的方式進行操作,只需在其中添加以下內容:
return render(request, "carts/home.html", {
'cart': cart_obj,
'entry': entry_obj,
'some_var': some_value,
})
讓我知道是否有幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.