有没有办法抛弃所有州/省/地区?

时间:2011-11-24 06:51:16

标签: django

我目前正在撰写国家/地区输入表格。你知道,这样的事情:

enter image description here

我还没有找到另一种好方法,所以这就是我正在做的事情。我正在使用django-countries,只是在我的模板中执行for循环,将所有国家/地区转储到HTML中:

def myview(request):
    from django_countries import countries
    return direct_to_template(request, "template.html", { "countries": countries.COUNTRIES })

{% for country in countries %}
    <option value="{{country.0}}">{{country.1}}</option>
{% endfor %}

现在是棘手的部分。我希望尽可能多地利用本机控件,所以我希望做到这样的事情:

{% for country in territory_countries %}
    <optgroup label="{{country.0}}">
        {% for territory in country.1 %}
            <option value="{{territory.0}}">{{territory.1}}</option>
        {% endfor %}
    </optgroup> 
{% endfor %}

清楚如泥,对吧?

第一个COUNTRIES列表如下所示:

COUNTRIES = (
    ('US',  'United States'),
)

我想要的东西看起来像这样:

TERRITORIES = (
    ('US',
        ('AL', 'Alabama'),
        ('AK', 'Alaska'),
    ),
)

它不一定非常像,但如果我能够将它融入我的设计中,那就太好了。

我是不是错了?有更好,更聪明的方法吗?是否有一个更聪明的Django模块并在数据库中使用实际模型?

这样做会更好:

countries = Country.objects.all()

<select id="countries">
    {% for country in countries %}
        <option value="{{country.abbr}}">{{country.name}}</option>
    {% endfor %}
</select>

<select id="territories">
    {% for country in countries %}
        {% if country.territories %}
            <optgroup label="{{country.abbr}}">
                {% for territory in country.territories %}
                    <option value="{{territory.abbr}}">{{territory.name}}</option>
                {% endfor %}
            </optgroup>
        {% endif %}
    {% endfor %}
</select>

有什么东西可以帮我解决这个问题吗?我应该说“用它来解决它”并构建一个Django模块来做我想做的事情吗?

1 个答案:

答案 0 :(得分:1)

是的,我确实构建了一个Django库来处理这个问题:django-locality

从我的痛苦中获益。