J'essaie de créer une vue hiérarchique dans Django, mais j'ai du mal à comprendre comment utiliser efficacement QuerySets.Création d'une vue de hiérarchie dans Django
Ce que je vise est finalement une page html qui affiche des cours comme celui-ci:
Main Course 1 --- Child Course 1
--- Child Course 2
Main Course 2 --- Child Course 3
--- Child Course 4
Chaque groupe de cours serait enveloppé dans un div style et etc.
À mon avis. py Je donne les résultats suivants:
class HierarchyView(generic.ListView):
template_name = 'curriculum/hierarchy.html'
def get_queryset(self):
return Offering.objects.all()
def get_context_data(self, **kwargs):
context = super(HierarchyView, self).get_context_data(**kwargs)
context['main'] = self.get_queryset().filter(course_type='M')
context['sub'] = self.get_queryset().filter(parent_code__in=context['main'])
return context
le modèle de placement est mis en place afin que parent_code est une clé étrangère auto-référentiel (c.-à-tout cours peut être un enfant de tout autre), comme t son:
...
parent_code = models.ForeignKey(
'self',
null=True,
blank=True,
on_delete=models.SET_NULL)
...
Et dans mon modèle html J'ai:
{% for mainoffering in main %}
<div>
<div>{{ mainoffering.course_name }}</div>
{% for offering in sub %}
<div>{{ offering.course_name }}</div>
{% endfor %}
</div>
{% endfor %}
Ce que cela entraîne, cependant, est que tous les cours enfants apparaissent sous tous les cours principaux, que oui ou non ils sont en réalité les enfants de ce cours, ce qui n'est évidemment pas ce que je cherche. Je suis encore en train d'apprendre les ficelles du métier dans Django, et j'ai du mal à trouver quoi que ce soit qui explique en anglais ce que je dois faire. S'il vous plaît aider!
ce que vous avez besoin est django-mptt – e4c5