我试图通过一个查询集循环,获取产品对象,并从产品的库存量中删除订购的项目数量。
这是我的模特的样子
class CartOrderItem(models.Model):
order = models.ForeignKey(CartOrder, on_delete=models.CASCADE)
product_obj = models.ForeignKey(Product, on_delete=models.CASCADE)
qty = models.IntegerField(default=0)
...
date = models.DateTimeField(auto_now_add=True, null=True, blank=True)
这是它在管理部分的外观
这就是我运行forloop的方式
@login_required
def PaymentSuccessView(request):
...
order_items = CartOrderItem.objects.filter(order=order, order__payment_status="paid")
for o in order_items.product_obj:
print(o.title) # print all the products title
print(o.stock_qty) # print the stock qty from the Product model
# I want to substract the CartOrderItem's qty from the Product's stock qty
然后它会显示这个错误
'QuerySet' object has no attribute 'product_obj'
这个错误是说CartOrderItems
模型的查询集没有"product_obj"
属性,但是我的CartOrderItems
中显然有一个'product_obj'
字段。
这是我想从产品库存数量中减去项目数量的方法,我不确定这是否有效,我也没有尝试过,因为上面的错误不允许我这样做。
for o in order_items.product_obj:
o.product_obj.stock_qty -= o.qty
o.save()
2条答案
按热度按时间ruarlubt1#
order_items
是一个QuerySet
对象,它显然没有product_obj
属性。你需要看看循环部分,因为你犯了一个很基本的错误。
d5vmydt92#
您需要首先迭代
order_items
以获得查询集结果,然后访问查询集返回的每个项的.product_obj
属性。