Python Django电子商务:购物车项目迭代未推送到db
我的订单应用程序中有以下型号:Python Django电子商务:购物车项目迭代未推送到db,python,django,shopping-cart,Python,Django,Shopping Cart,我的订单应用程序中有以下型号: 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'
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)
我有以下创建订单视图:
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中看到1个(第一个)产品
有没有关于如何纠正这种情况的建议?
或
在哪里查找?这是行中的标识,cart.clear(),它应该不在“for”循环中 试试这个
for item in cart:
OrderItem.objects.create(order=order, product=item['product'],
price=item['price'], quantity=item['quantity'])
cart.clear()
也许这条线在这里
cart.clear()
-可能想将其从我假设的for循环中移出。确实如此。在第一次迭代之后,我似乎正在清理我的购物车。谢谢