django - Django - 如何在模板中呈现父对象?
问题描述
我需要在 {{product.description}} 旁边显示一些产品的供应商,但我无法让它显示在我的桌子上。
模型.py
class Supplier(models.Model):
name = models.CharField(max_length=200, null=True)
phone = models.CharField(max_length=200, null=True, blank=True)
email = models.CharField(max_length=200, null=True, blank=True)
date_created = models.DateTimeField(auto_now_add=True, null=True)
def __str__(self):
return self.name
class Product(models.Model):
sku = models.IntegerField(null=True)
description = models.CharField(max_length=30)
costprice = models.FloatField(null=True, max_length=99, blank=True)
retailprice = models.FloatField(null=True, max_length=99, blank=True)
barcode = models.CharField(null=True, max_length=99, unique=True)
image = models.ImageField(null=True, blank=True)
supplier = models.ForeignKey(Supplier, on_delete=models.CASCADE, null=True)
def __str__(self):
return self.description
视图.py
def products(request):
products = Product.objects.all()
suppliers = Supplier.objects.all()
context = {'products': products,
'suppliers': suppliers}
return render(request, 'crmapp/products.html', context)
产品.html
<tr>
{% for product in products %}
<td>{{product.id}}</td>
<td><h6><strong>{{product.description}}</strong></h6></td>
<td >{{products.supplier}}</td>
<td>£{{product.costprice |floatformat:2}}</td>
<td>£{{product.retailprice |floatformat:2}}</td>
<td>{{product.barcode}}</td>
</tr>
{% endfor %}
解决方案
拼写错误,我想。
<td >{{products.supplier}}</td>
一定是:
<td >{{product.supplier}}</td>
请注意,我已经删除了s
in product s。
此外,您的views.py 中不需要这个:
suppliers = Supplier.objects.all()
{{product.supplier}}
将触发对数据库的查询。为避免这种情况,请使用prefetch_related。
products = Product.objects.all().prefetch_related('supplier')
请注意,这是可选的。它只会提高效率,但仅修复拼写错误就可以回答您的问题。
推荐阅读
- google-apps-script - onOpen 事件不启动对话框
- python - 按 VPC ID 列出 AWS 中的子网
- php - WooCommerce API- 从订单中获取选项 SKU
- python - 使用 keras 模型的预测作为另一个 keras 模型中的层
- c# - 为什么有些控件需要依赖属性进行绑定,而有些则不需要?如何绑定 RichTextBox.Document?
- python - 为什么分配不适用于此 DataFrame
- c# - WebAPI - HTTP405: BAD METHOD - 使用的 HTTP 动词不支持使用 JavaScript
- amp-html - 在移动设备上搜索时未显示由 Google 编入索引的 AMP 页面
- java - Starter autoconfig bean 始终优先于自定义 autoconfig bean
- python-2.7 - Sendgrid 错误 - ValueError('请使用 To、Cc 或 Bcc 对象。',)