Мне нужно реализовать два раскрывающихся списка, значение которых зависит от выбора первого.Невозможно реализовать динамический раскрывающийся список в Django
Я смог реализовать это в бэкэнде, но я изо всех сил стараюсь сделать это в интерфейсе и, более конкретно, с помощью javascript!
countries = Country.objects.filter(Enabled=True)
citiesByCountry = {}
for country in countries:
citiesInCountry = City.objects.filter(Enabled=True, Country=country)
cities = []
for city in citiesInCountry:
cities.append(city.Name)
citiesByCountry[country.Name] = cities
context = {'citiesByCountry': citiesByCountry}
return render(request, 'index.html', context)
Так я следующая структура:
'Country':['City1', 'City2']
Вот HTML:
<div class="form-group col-md-4">
<select class="form-control" onchange="test(this.value)" id="sel1">
{% for country in citiesByCountry %}
<option value="{{ country }}">{{ country }}</option>
{% endfor %}
</select>
</div>
<div class="form-group col-md-4">
<select class="form-control" id="cities">
</select>
</div>
Так я добавил следующие Javascript:
<script>
var country_objs = {};
{% for country, cities in citiesByCountry.items %}
country_objs['{{country|escapejs}}'] = '{{cities|escapejs}}';
{% endfor %}
</script>
<script type="application/javascript">
function test(country) {
var $cities_select = $("#cities");
$(country_objs[country]).each(function(){
$cities_select.append('<option>' + this + '<\option>');
});
}
</script>
Второй выпадающее меню никогда не заполняется d, но когда я печатаю содержание country_objs
как это: console.log(country_objs[country]);
Я получаю следующее:
['City1', 'City2', 'City3']
Который является правильным, но функция .each
не делает петлю по пунктам. Я думаю, проблема в том, что выше это не правильный массив, а строка, но до сих пор не могу понять, почему.
Обратите внимание, что я получаю следующее сообщение об ошибке:
jquery.min.js:2 Uncaught Error: Syntax error, unrecognized expression: ['City1', 'City2', 'City3']
К сожалению, все, что я стараюсь не работать, я не мог себе представить, что реализация этого в Django будет так трудно.
Я хотел бы избежать использования стороннего приложения или модуля для выполнения этой простой задачи, и я хотел бы использовать правильный способ сделать это (наилучшим образом), чтобы любые идеи были действительно полезными.
Работали !! Спасибо! Единственная проблема заключается в том, что в моем раскрывающемся списке моих городов есть несколько пустых строк в качестве опций среди фактических городов, которые я не уверен, откуда они пришли. – John
no prob :) Если вы печатаете список в python, нет пустых строк? Кроме того, не забудьте установить значение optinos в городах, а также – dietbacon
Нет нет пробелов в списке python, и я также задал значение. – John