如何在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 %}