如何在Django模板中获取循环外部的queryset值?
我以下面这个场景为例 当前情景如何在Django模板中获取循环外部的queryset值?,django,django-templates,Django,Django Templates,我以下面这个场景为例 当前情景 {% for city in cities %} <div id="{{city.country}}"> <p>Choose a city</p> <li>{{ city.name }}</li> </div> {% endfor %} {%用于城市中的城市%} 选择一个城市 {{city.name} {%endfor%} 我想要什么 <
{% for city in cities %}
<div id="{{city.country}}">
<p>Choose a city</p>
<li>{{ city.name }}</li>
</div>
{% endfor %}
{%用于城市中的城市%}
选择一个城市
{{city.name}
{%endfor%}
我想要什么
<div id="{{city.country}}">
<p>Choose a city</p>
{% for city in cities %}
<li>{{ city.name }}</li>
{% endfor %}
</div>
选择一个城市
{城市中城市的百分比%}
{{city.name}
{%endfor%}
我怎样才能做到这一点?
谢谢,就像@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 %}
#views.py
从django.conf导入设置
城市=[]
对于settings.COUNTRIES中的国家/地区:
cities.append([country,City.objects.filter(country=country)])
#cities.html
{%表示国家,城市中的城市%}
选择一个城市
{{city.name}
{%endfor%}
我希望我的城市列表按国家排序,因此我将数据放入列表中。而且我只有不到10个国家,所以我在设置文件中有一个国家的列表 也许使用内置模板标签更优雅
这将是沿着这些路线的东西(未经测试):
{%按国家/地区将城市重新组合为国家/地区列表%}
{国家/地区中的国家/地区的%u列表%}
选择一个城市
{国家/地区中城市的百分比。列表%}
{{city.name}
{%endfor%}
{%endfor%}
有趣的是,官方Django文档中的示例也使用了城市和国家。查看它(链接在上面)。看起来你需要一个国家列表以及里面的城市,然后你可能就可以了。修改视图中的数据结构,以执行类似于
[{“countryname”:[{“name”:等的操作。
{% 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 %}