Ich arbeite an meinem ersten Django-Projekt (abgesehen von ein paar Tutorials) und bleibe dabei, wie ich das erreichen kann. Der Einfachheit halber werde ich eine Excel-Analogie verwenden, um zu erklären, was ich zu tun versuche. Ich habe 7 Knöpfe über Reihe 1 (TOP-Modell). Wenn Sie auf eine dieser Schaltflächen klicken, wird eine Liste von 5 Elementen in Spalte A (SEITENMODELL) angezeigt, die alle entsprechende Elemente in den Zeilen 2-6 (BODY-Modell) enthalten. In der Ansicht kann ich das SIDE-Modell über den TOP-Modell-Primärschlüssel laden, kann aber nicht herausfinden, wie das BODY-Modell verbunden werden soll, da es vom SIDE-Modell abhängig ist.Wie lade ich mehrere Tabellen in eine Django View?
VIEW
def details(request, pk):
top = TOP.objects.filter().order_by('-modified_date')
middle= MIDDLE.objects.filter(TOP_id__pk=pk)
body = BODY.objects.filter(??????????)
return render(request, 'details.html', {'top': top, 'middle': middle,
'body': body})
MODEL
class TOP(models.Model):
title = models.CharField(max_length=200)
class MIDDLE(models.Model):
TOP= models.ForeignKey('mysite.TOP', related_name='middle')
title = models.CharField(max_length=200)
class BODY(models.Model):
TOP= models.ForeignKey('mysite.TOP', related_name='indicators')
MIDDLE= models.ForeignKey('mysite.MIDDLE', related_name='indicators')
title = models.CharField(max_length=200)
TEMPLATE
{% block content %}
<div>
<div class="TOP-container">
{% for tops in top %}
<div class="tops"><a href="{% url 'details' pk=tops.pk %}">{{ tops.title }}</a></div>
{% endfor %}
</div>
{% for middles in middle %}
<div class="middle-container">
<div class="middles">{{ middles.title }}</div>
{% for bodys in body %}
<div class="bodys">{{ body.title }}</div>
{% endfor %}
</div>
{% endfor %}
</div>
{% endblock %}
Das ziemlich schmerzlos passieren müssen war und macht durchaus Sinn, danke! Ich habe auch die Verwendung von single/plural Variablennamen korrigiert, die jetzt definitiv besser liest. Ich habe das Django Girls Tutorial-Projekt, das ich zuvor fertiggestellt habe, benutzt und sie haben sie umgedreht, also danke, dass du darauf hinweist. – pheeper