Django | Вывести дерево связанных объектов
Требуется помощь по Django.
Имеется модель:
class Match(models.Model):
date_time = models.DateTimeField('Дата начала', auto_now_add=True)
class Forecast(models.Model):
date_time = models.DateTimeField('Когда опубликован', auto_now_add=True)
match = models.ManyToManyField(to='matches.Match')
class ForecastChoice(models.Model):
date_time = models.DateTimeField('Когда опубликован', auto_now_add=True)
forecast = models.ForeignKey(Forecast, on_delete=models.CASCADE, related_name='choice')
Каким образом составить запрос, чтобы в шаблоне страницы Match вывести дерево связанных объектов таким образом:
Match
--Forecast
----ForecastChoice
----ForecastChoice
----ForecastChoice
--Forecast
----ForecastChoice
----ForecastChoice
----ForecastChoice
--Forecast
----ForecastChoice
----ForecastChoice
----ForecastChoice
Ответы (1 шт):
Автор решения: Muck Son
→ Ссылка
В контекст передаешь "matches".
context = {"matches": Match.objects.all()}
А в шаблоне вот так пишешь:
{%for match in matches %}
<div class=match>
{% for forecast in match.forecast_set.all %}
<div class="forecast">
{% for choiсe in forecast.choiсe.all %}
<div class="choiсe">{{choiсe.date_time}}</div>
{% endfor %}
</div>
{% endfor %}
</div>
{% endfor %}
Должно сработать. Совет: related_name лучше писать во множественном числе.