2017-02-26 4 views
0

Ich habe dieses Szenario unten als BeispielWie erhalten Sie den Abfragewert außerhalb der Schleife in der Django-Vorlage?

Aktuelles Szenario

{% for city in cities %} 
    <div id="{{city.country}}"> 
     <p>Choose a city</p> 
     <li>{{ city.name }}</li> 
    </div> 
{% endfor %} 

Was ich will

<div id="{{city.country}}"> 
    <p>Choose a city</p>  
     {% for city in cities %} 
      <li>{{ city.name }}</li> 
     {% endfor %}  
</div> 

Wie kann ich das erreichen? Danke

+2

sieht aus wie Sie brauchen eine Liste von Ländern zusammen mit den Städten innerhalb und dann können Sie wahrscheinlich. Überarbeiten Sie Ihre Datenstruktur in Ihrer Ansicht, um etwas wie '[{" Ländername ": [{" Name ": etc ...' zu machen – erewok

Antwort

0

Wie @erework sagte ich die Daten aus meiner Sicht umstrukturiert. Wenn Sie irgendwelche besseren Wege haben, können Sie gerne bearbeiten. Unten ist, wie ich es gemacht habe:

Ich wollte meine Städte Liste nach Land sortiert daher habe ich die Daten in eine Liste. Außerdem hatte ich nur weniger als 10 Länder, also hatte ich eine Liste von ihnen in Einstellungsdatei.

1

Vielleicht ist die Verwendung des eingebauten {% regroup %} Template-Tags eleganter.

{% regroup cities by country as country_list %} 

{% for country in country_list %} 
    <div id="{{country.grouper}}"> 
     <p>Choose a city</p>  
     {% for city in country.list %} 
      <li>{{ city.name }}</li> 
     {% endfor %}  
    </div> 
{% endfor %} 

Interessanterweise ist das Beispiel in offiziellen Django docs auch verwendet Städten und Ländern:

Es wäre etwas in dieser Richtung (nicht getestet) sein. Schau es dir an (oben verlinkt).

Verwandte Themen