Есть ли способ свалить все штаты / провинции / территории? - PullRequest
1 голос
/ 24 ноября 2011

Я сейчас пишу форму ввода страны / территории. Вы знаете, что-то вроде этого:

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 Ответ

1 голос
/ 06 декабря 2011

Да, я определенно создал библиотеку Django для решения этой проблемы: django-locality

Воспользуйтесь преимуществами моих страданий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...