我目前正在撰写国家/地区输入表格。你知道,这样的事情:
我还没有找到另一种好方法,所以这就是我正在做的事情。我正在使用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模块来做我想做的事情吗?