我有2個模型。其中一個是另一個的主鍵,如下例所示。
class Product(models.Model):
name = models.CharField(max_length=32, unique=True)
power = models.IntegerField(default=0)
class Price(models.Model):
product = models.OneToOneField(Product, on_delete=models.PROTECT, primary_key=True)
price = models.IntegerField(default=0)
我想構建一個模板來顯示來自 2 個模型的資料。例如:
List of Products
product: P_A ? ?power: 1000W ? price: $
product: P_B ? ?power: 1500W ? price: $
product: P_C ? ?power: 2000W ? price: $
我做了幾次嘗試,但未能成功顯示價格。其中之一是以下模板和視圖:
<h2>List of Products</h2>
<ul>
{% for product in list_of_products %}
<li>product: {{ product.name }}    power: {{ product.power }}W   price: {{prices.product.price }} $</li>
{% endfor %}
</ul>
def index(request):
products = Product.objects.all()
prices = Price.objects.all()
return render(request, "index.html", {'list_of_products': products, 'prices': prices})
uj5u.com熱心網友回復:
您不應將Prices 的查詢集傳遞給模板,您可以使用:
def index(request):
products = Product.objects.select_related('price')
return render(request, "index.html", {'list_of_products': products})
然后在模板中,您使用以下方式渲染它:
{% for product in list_of_products %}
<li>產品:{{ product.name }} ? ?power: {{ product.power }}W ? 價格:{{ product.price.price }} $</li>
{% endfor %}
但是,我不清楚為什么您不將價格存盤在Product此處的模型中,而是使用單獨的模型。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/487017.html
標籤:Python django django模型 django-模板
