В Django Template как получить все дочерние объекты, используя один объект?
У меня есть модели типа :
class Invoice(models.Model):
created_date = models.DateTimeField(auto_now_add=True)
class Sell(models.Model):
invoice = models.OneToOneField(Invoice, on_delete=models.CASCADE)
class SellItems(models.Model):
sell = models.ForeignKey(
Sell, related_name='sell_item', on_delete=models.CASCADE)
item = models.CharField(max_length=200)
В шаблоне, как я могу получить SellItems
используя Invoice
объект.
Вы можете использовать следующий сниппет:
from models import Invoice
invoice = Invoice.objects.all().first()
if invoice and invoice.sell:
sell_items = invoice.sell.sell_item.all()
Помните, что sell
может не быть, если нет отношений.
для доступа к обратной связи внешнего ключа используйте _set
из docs
Ваш запрос:
invoice = Invoice.objects.first()
в вашем шаблоне:
{% for sell in invoice.sell_set.all %}
<h1>{{ sell.pk }}</h1>
{% for sell_item in sell.sellitems_set.all %}
<h1>{{ sell_item.item }}</h1>
<br>
{% endfor %}
<br>
{% endfor %}