【发布时间】:2014-02-04 19:44:21
【问题描述】:
使用select_related()时,我无法在模板中显示相关表格的字段
这是我的模型:
class Customer(models.model):
customer_name = models.CharField(max_length=500)
class Orders(models.model):
cust_id = models.ForeignKey(Customers)
invoice_number = models.IntegerField()
invoice_creation_date = models.DateTimeField('Invoice Created Date')
class Products(models.Model):
name = models.CharField(max_length=500)
description = models.CharField(max_length=500)
price = models.DecimalField(max_digits=20, decimal_places=2)
class Orders_Products(models.Model):
order_id = models.ForeignKey(Orders)
product_id = models.ForeignKey(Products)
quantity = models.IntegerField(default=0)
这是我的看法:
def home(request):
list_of_orders = Orders_Products.objects.select_related()
template = 'erp_app/home.html'
context = RequestContext(request, {'list_of_orders': list_of_orders})
return render(request, template, context)
如何在模板中表示来自Orders 和Products,尤其是Customers 的相关字段。例如。我想显示同一条相关记录中的Orders.invoice_number、Products.name 和Customer.customer_name。
例如:
{% for order in list_of_orders %}
<tr>
<td>{{ order.orders.invoice_number }}</td>
<td>{{ order.products.name }}</td>
<td>{{ order.customers.customer_name }}</td>
</tr>
{% endfor %}
【问题讨论】:
-
试试
<td>{{ order.product.name }}</td>。另请参阅thread。 -
您的建议无效。因此,他通过将
select_related作为模型的一部分来解决问题。我想将其保留在视图中,并将其作为context的request发送到模板。 -
作为@alecxe 评论,您的ForeignKey 被称为
product而不是products。所以你必须使用order.product.name。 -
嗯,我的 ForeignKey 不是叫
product_id,不是products? @sgmart @alecxe -
还是谢谢你们,你们帮我弄明白了。
标签: python django django-templates django-select-related