Python 属性错误位于/orders/';QuerySet';对象没有属性';订单项
我正在django项目中工作,我想显示客户的所有订单。 这是my models.py:Python 属性错误位于/orders/';QuerySet';对象没有属性';订单项,python,django,Python,Django,我正在django项目中工作,我想显示客户的所有订单。 这是my models.py: class Order(models.Model): customer=models.ForeignKey(Customer,on_delete=models.SET_NULL,null=True,blank=True) date_ordered=models.DateTimeField(auto_now_add=True) complete=models.BooleanField(d
class Order(models.Model):
customer=models.ForeignKey(Customer,on_delete=models.SET_NULL,null=True,blank=True)
date_ordered=models.DateTimeField(auto_now_add=True)
complete=models.BooleanField(default=False,null=True,blank=False)
transaction_id=models.CharField(max_length=100,null=True)
class OrderItem(models.Model):
product=models.ForeignKey(Product,on_delete=models.SET_NULL,null=True)
order=models.ForeignKey(Order,on_delete=models.SET_NULL,null=True)
quantity=models.IntegerField(default=0,null=True,blank=False)
date_added=models.DateTimeField(auto_now_add=True)
这是my views.py:
def orders(request):
customer=request.user.customer
order=Order.objects.filter(customer=customer, complete=True)
items=order.orderitem.get(order=order)
return render(request,"orders.html",{'order':order,})
打开此模板时,会出现错误:查询集对象没有属性orderitem。我希望它能给我complete=True的订单,以及该特定订单下的所有orderitems,这样我就可以迭代它们,并在模板中显示它们,但这对我来说是不可能的。
请帮忙。任何帮助都将不胜感激。将相关的\u name=“order\u items”
添加到order item
字段中,如下所示
order=models.ForeignKey(Order,on_delete=models.SET_NULL,null=True, related_name="order_items")
现在,您可以像这样访问订单的order\u项目
order=Order.objects.filter(customer=customer, complete=True).first()
items = order.order_items
您可以使用以下选项:
items=OrderItem.objects.all()
在模板中,您可以使用一个循环并给出一个if条件,查看您的模型,如:
{% for ord in orders %}
{% for item in items %}
{% if item.order.id == ord.id %}
这不是最有效的方法,因为它将迭代数据库中的所有项目,但它可能适合您@rohitbumrah更新了答案。你也应该先调用
,
。但是如果一个用户有多个订单呢。我想把它们全部显示在屏幕上once@VATSALJAIN然后您应该使用all
而不是first
,并且对于每个订单
访问order.order\u项目
。查看上面的我的答案。我过去也有同样的问题。检查它是否有效,还有什么更好的方法……这对我来说是一个危险的解决方案!如果存在大量的OrderItem
对象,这可能会导致应用程序发生灾难。更好的方法是先过滤客户订单,然后过滤订单的订单项。是的,准确地说……我可以过滤客户订单,但我找不到过滤订单的订单项的方法…@mehdy你告诉我的解决方案给了我同样的查询错误set@rohitbumrah你用我最新的解决方案测试了吗?我有一些问题。首先,添加相关的_名称会影响我的其他功能。第二,我如何迭代它,因为之前我可以使用if-else,但现在呢?