2017-02-26 4 views
0

私はDjangoテンプレートのループ外でクエリーセット値を取得するには?

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

がどのように私はそれを達成することができます欲しい

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

例として

現在のシナリオをシナリオ以下、これを持っていますか? ありがとう

+2

あなたは都市の中に国のリストが必要なように見えますし、そうすることもできます。あなたのビューであなたのデータ構造を再構築して '[{" countryname ":[{" name ":etc ...' – erewok

答えて

0

@ereworkのように私は私のビューでデータを再構成したと言いました。より良い方法があれば、自由に編集してください。私がそれをしたのは以下の通りです。

#views.py 
from django.conf import settings 
cities = [] 
for country in settings.COUNTRIES: 
    cities.append([country, City.objects.filter(country=country)]) 


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

私の都市リストは国によってソートされたので、私はリストにデータを入れました。また、私は10カ国未満の国しか持っていなかったので、設定ファイルにリストがありました。

1

テンプレートタグ{% regroup %}が組み込まれている方がよりエレガントです。

これらの行(テストされていない)に沿って何かのようになります。興味深いことに、公式のDjangoのドキュメントの例では、また、都市や国を使用しています

{% 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 %} 

。それをチェックしてください(上にリンクされています)。

関連する問題