Ich versuche, eine Hierarchieansicht in Django zu erstellen, aber ich habe Schwierigkeiten, sinnvoll zu verstehen, wie QuerySets effektiv verwendet werden kann.Erstellen einer Hierarchieansicht in Django
Was denn ich bin mit dem Ziel ist schließlich eine HTML-Seite, die Kurse wie folgt angezeigt:
Main Course 1 --- Child Course 1
--- Child Course 2
Main Course 2 --- Child Course 3
--- Child Course 4
Jede Gruppe von Kursen in einem div gewickelt werden würde und Stil usw.
Aus meiner Sicht. py-Datei ich habe folgend:
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
das Angebotsmodell ist so ausgelegt, dass parent_code ist ein selbstbezüglicher Fremdschlüssel (dh jeder Kurs kann ein Kind eines andere sein), wie t sein:
...
parent_code = models.ForeignKey(
'self',
null=True,
blank=True,
on_delete=models.SET_NULL)
...
Und in meinem HTML-Template Ich habe:
{% for mainoffering in main %}
<div>
<div>{{ mainoffering.course_name }}</div>
{% for offering in sub %}
<div>{{ offering.course_name }}</div>
{% endfor %}
</div>
{% endfor %}
Was dies ergibt, ist jedoch, dass alle Kind-Kurse unter allen Hauptgerichten erscheinen, unabhängig davon, ob sie tatsächlich Kinder dieses Kurses, was offensichtlich nicht mein Ziel ist.
Ich lerne immer noch die Seile in Django, und ich habe Mühe, etwas zu finden, das in einfachem Englisch erklärt, was ich tun muss. Bitte helfen Sie!
was Sie brauchen, ist Django-Mptt – e4c5