我有一个问题,因为我不知道如何实现“添加特定数量的产品到购物车”。 目前,在按下“加入购物车”按钮后,只会增加一个产品数量。 我不知道如何在视图和模板中联系起来。 我希望它取给定的值而不是1。
cart_item.quantity += 1
车/ views.py
def add_cart(request, product_id):
product = Product.objects.get(id=product_id)
try:
cart = Cart.objects.get(cart_id=_cart_id(request))
except Cart.DoesNotExist:
cart = Cart.objects.create(
cart_id = _cart_id(request)
)
cart.save()
try:
cart_item = CartItem.objects.get(product=product, cart=cart)
if cart_item.quantity < cart_item.product.stock:
cart_item.quantity += 1
cart_item.save()
except CartItem.DoesNotExist:
cart_item = CartItem.objects.create(
product = product,
quantity = 1,
cart = cart
)
cart_item.save()
return redirect('cart:cart_detail')
车/ models.py
class Cart(models.Model):
cart_id = models.CharField(max_length=250, blank=True)
date_added = models.DateField(auto_now_add=True)
class Meta:
db_table = 'Cart'
ordering = ['date_added']
def __str__(self):
return self.cart_id
class CartItem(models.Model):
product = models.ForeignKey(Product, on_delete=models.CASCADE)
cart = models.ForeignKey(Cart, on_delete=models.CASCADE)
quantity = models.IntegerField()
active = models.BooleanField(default=True)
class Meta:
db_table = 'CartItem'
def sub_total(self):
return self.product.price * self.quantity
def __str__(self):
return self.product
模板/商店/ product.html
<div class="float-right">
<div class="float-left"> <input type="number" value="1" aria-label="Search"
class="form-control" style="width: 100px"> </div>
<a class="btn send-click btn-md my-0 p" href="{% url 'cart:add_cart' product.id %}">Add to Cart</a></div>
urls . py
app_name='cart'
urlpatterns = [
path('add/<int:product_id>/', views.add_cart, name='add_cart'),
path('', views.cart_detail, name='cart_detail'),
path('remove/<int:product_id>/', views.cart_remove, name='cart_remove'),
path('full_remove/<int:product_id>/', views.full_remove, name='full_remove'),
]
问题来源StackOverflow 地址:/questions/59379019/adding-a-specific-quantity-of-the-product-to-the-cart-in-django
如果你不想用post处理的形式,你可以用inline JS获取金额。您需要调整您的url和视图来接受项目的数量。
<div class="float-right">
<div class="float-left"> <input id="amount_field" type="number" value="1" aria-label="Search"
class="form-control" style="width: 100px"> </div>
<button type="button" onclick="location.href='{% url \"cart:add_cart\" product.id %}'.concat("/",document.getElementById('amount_field').value);" >Add Items</button>
</div>
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。