Ich habe ein paar Probleme mit meiner Django-App, um anzuzeigen, wie ich es möchte. Mein Modell sieht wie folgt aus:Verschachtelte Suchanfragen in Django
class City (models.Model):
city_name = models.CharField(max_length=100, unique=True)
def __str__(self):
return self.city_name
class Portfolio(models.Model):
portfolio_name = models.CharField(max_length=20, unique=True)
city = models.ForeignKey(City, db_constraint=False, on_delete=models.CASCADE)
def __str__(self):
return self.portfolio_name
class Property (models.Model):
portfolio = models.ForeignKey(Portfolio, db_constraint=False, on_delete=models.CASCADE)
prop_name = models.CharField(max_length=250, unique=True)
def __str__(self):
return self.prop_name
ich meine Vorlage wollen jede Stadt anzuzeigen, und unter jeder Stadt haben ihre Portfolios und unter jedem Portfolio haben seine Eigenschaften. Ich bin ein bisschen neu zu Django, von AngularJS kommen, wo ich es tun könnte wie folgt Filter in meinem Schleifen zu werfen (natürlich nicht in Django funktioniert, zumindest, wie ich es tue):
<ul>
{% for city in all_cities %}
<li>
{{ city.city_name }}
<ul>
{% for portfolio in all_portfolios| portfolio.city = city %}
<li>
{{ portfolio.portfolio_name }}
<ul>
{% for property in portfolio.all_properties| property.portfolio = portfolio%}
<li>
{{ property.prop_name }}
</li>
{% endfor %}
</ul>
</li>
{% endfor %}
</ul>
</li>
{% endfor %}
</ul>
Irgendwelche Ideen? Es gibt wahrscheinlich eine einfache Lösung, die ich noch nicht verbalisieren kann. Das einzige, was ich so herausgefunden habe, ist, ein benutzerdefiniertes Abfrage-Set für jede Stadt zu erstellen, dann für jedes Portfolio, aber es muss einen besseren Weg geben, dies zu tun.
gut sein, wenn Sie entsprechende Anwendung [ 'prefetch_related()'] (https://docs.djangoproject.com/en/ 1.10/ref/models/queriesets/# prefetch-bezogene) Aufrufe an die Abfrage vor dem Finalisieren, sollten Sie in der Lage sein, die verschachtelte Iteration in der Vorlage naiv auszuführen, ohne weiteren Datenbankzugriff zu verursachen. –