Я пытаюсь отобразить некоторые объекты django в моем шаблоне, которые связаны с Foreign Key field
.
Я попытался сделать простой пример, чтобы проиллюстрировать, что я хотел бы получить в своем шаблоне сaccordion html
.
Моя модель django:
class Grandparent(models.Model):
name = models.CharField(...)
age = models.IntegerField(...)
def __str__(self):
return f"{self.name} : {self.age}"
class Parent(models.Model):
name = models.CharField(...)
age = models.IntegerField(...)
grandparent = models.ForeignKey(Grandparent, related_name='grandparent')
def __str__(self):
return f"{self.name} : {self.age}"
class Child(models.Model):
name = models.CharField(...)
age = models.IntegerField(...)
parent = models.ForeignKey(Parent, related_name='parent')
def __str__(self):
return f"{self.name} : {self.age}"
Как видите, ребенок зависит от родителя, который зависит от деда.
Мой HTML-шаблон:
Теперь я хотел бы отобразить нечто подобное в моем HTML-шаблоне:
![enter image description here](https://i.stack.imgur.com/nxhmE.png)
Так что мой HTML выглядит так, как показано ниже, и я не могу получить то, что хочу:
{% for grandparent in grandparent_list %}
<div class="accordion-publication panel-group" id="accordion" role="tablist" aria-multiselectable="true">
<div class="panel-primary">
<div class="panel-heading" role="button" id="head_0" data-toggle="collapse">
<span>{{ grandparent }}</span>
</div>
{% for parent in parent_list %}
<div class="panel-collapse collapse in" role="tabpanel" aria-expanded="true">
<div class="panel-body">
<div class="panel panel-default">
<div class="panel-heading collapsed" role="button" data-toggle="collapse" aria-expanded="true">
<span class="panel-title">{{ parent }}</span>
</div>
<div class="panel-collapse collapse in" role="tabpanel" aria-labelledby="head_0">
<div class="panel-body">
{% for child in child_list %}
<table class="table table-condensed">
<tbody>
<tr>
<td class="col-md-1"> {{ child }}</td>
</tr>
</tbody>
</table>
{% endfor %}
</div>
</div>
</div>
</div>
</div>
{% endfor %}
</div>
</div>
{% endfor %}
Этот HTML-код немного общий, но я непреодолеть, чтобы получить отношения между каждым уровнем и подуровнем, чтобы отобразить for each grandparent
, отобразить each parents associated
, затем отобразить each child associated to each parent
..
My django view:
Мой класс в моем представлении django выглядит так:
def get_context_data(self, **kwargs):
self.count_number_document()
self.flag_publication()
kwargs['child_list'] = Child.objects.all().order_by('parent__grandparent__name')
kwargs['parent_list'] = Parent.objects.all().order_by('name')
kwargs['grandparent_list'] = Grandparent.objects.all()
return super(MyClassView, self).get_context_data(**kwargs)