Django 电子商务:购物车项目迭代未推送到数据库
Django E-Commerce: cart item Iterations not pushed to db
我的订单应用程序中有以下型号:
class Order(models.Model):
# customer info
first_name = models.CharField(max_length=50)
last_name = models.CharField(max_length=50)
class OrderItem(models.Model):
order = models.ForeignKey(Order, related_name='items', on_delete=models.CASCADE)
product = models.ForeignKey(Product, related_name='order_items', on_delete=models.CASCADE)
price = models.DecimalField(max_digits=5, decimal_places=2)
quantity = models.PositiveIntegerField(default=1)
我有以下 create_order 观点:
def create_order(request):
cart = Cart(request)
if request.method == 'POST':
form = CreateNewOrderForm(request.POST)
if form.is_valid():
order = form.save()
for item in cart:
OrderItem.objects.create(order=order, product=item['product'], price=item['price'], quantity=item['quantity'])
cart.clear()
else:
form = CreateNewOrderForm()
问题
创建新订单时,如果我的购物车包含多个产品,我只能在我的 OrderItem 中看到一个(第一个)产品。
关于如何纠正这个问题有什么建议吗?
要么
在哪看?
这是行中的缩进,cart.clear(),它应该在“for”循环之外
试试这个,
for item in cart:
OrderItem.objects.create(order=order, product=item['product'],
price=item['price'], quantity=item['quantity'])
cart.clear()
我的订单应用程序中有以下型号:
class Order(models.Model):
# customer info
first_name = models.CharField(max_length=50)
last_name = models.CharField(max_length=50)
class OrderItem(models.Model):
order = models.ForeignKey(Order, related_name='items', on_delete=models.CASCADE)
product = models.ForeignKey(Product, related_name='order_items', on_delete=models.CASCADE)
price = models.DecimalField(max_digits=5, decimal_places=2)
quantity = models.PositiveIntegerField(default=1)
我有以下 create_order 观点:
def create_order(request):
cart = Cart(request)
if request.method == 'POST':
form = CreateNewOrderForm(request.POST)
if form.is_valid():
order = form.save()
for item in cart:
OrderItem.objects.create(order=order, product=item['product'], price=item['price'], quantity=item['quantity'])
cart.clear()
else:
form = CreateNewOrderForm()
问题
创建新订单时,如果我的购物车包含多个产品,我只能在我的 OrderItem 中看到一个(第一个)产品。
关于如何纠正这个问题有什么建议吗? 要么 在哪看?
这是行中的缩进,cart.clear(),它应该在“for”循环之外
试试这个,
for item in cart:
OrderItem.objects.create(order=order, product=item['product'],
price=item['price'], quantity=item['quantity'])
cart.clear()