Django: шаблон для вывода списка данных из 2 моделей, связанных друг с другом
У меня есть 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})
Спасибо за любую помощь в решении моей проблемы.
Вам не следует передавать в шаблон набор запросов Price
, вы можете работать с:
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: {{ product.name }}    power: {{ product.power }}W   price: {{ product.price.price }} $</li> {% endfor %}
Однако мне не ясно, почему вы не храните цену в модели Product
здесь, а работаете с отдельной моделью.