@anderlan
senior django developer

Можно ли без перезагрузки страницы создать зависимые select'ы в django?

Доброго времени суток!
Суть следующая.
Имеется несколько связанных через FK таблиц MySQL: Страны, Федеральные округа, Регионы, Города.
#models.py
class Country(models.Model):
	country_name = models.CharField(max_length=200, verbose_name='Страна')

	def __unicode__(self):
		return self.country_name

	class Meta:
		verbose_name = 'страна'
		verbose_name_plural = 'Страны'

class District(models.Model):
	district_name = models.CharField(max_length=100, verbose_name='Федеральный округ')
	district_country = models.ForeignKey('Country', verbose_name='Подчинение страны')

	def __unicode__(self):
		return self.district_name

	class Meta:
		verbose_name = 'федеральный округ'
		verbose_name_plural = 'Федеральные округа'


Данные из этой таблицы и некоторых других вывожу через views.py:
#views.py
def CabinetView(request, id):
	cab = Cabinet.objects.all().filter(id=id) #Выводится список нужных кабинетов
	cab_type = CabinetTypes.objects.all() #... их типов
	country = Country.objects.all() #... список стран
	district = District.objects.all() #... список фед. округов
	region = Region.objects.all() #... список районов
	city = City.objects.all() #...список городов
	rendering = {
	'cab': cab,
	'cab_type': cab_type,
	'country': country,
	'district': district,
	'region': region,
	'city': city,
	}
	return render_to_response('cabinet.html', rendering)


в шаблон в форму, где должны быть зависимые select'ы:

<!-- cabinet.html -->
			<tr>
				<th>Страна</th>
				<td>
					<select name='cab_coutry' class='forinput_edit' id='select-1'>
						{% for i in country %}
							<option value='{{ i.id }}' required>{{ i.country_name }}</option>
						{% endfor %}
					</select>
				</td>
			</tr>
			<tr>
				<th>Федеральный округ</th>
				<td>
					<select name='cab_district' class='forinput_edit' id='select-2'>
						{% for i in district %}
						<option value='{{ i.id }}' required>{{ i.district_name }} ({{ i.district_sname }})</option>
						{% endfor %}
					</select>
				</td>
			</tr>


Форма должна работать по идее так: при выборе страны без перезагрузки страницы в следующем select должен загружаться список фед. округов, привязанных к выбранной стране. И так далее. Подгрузился список округов - следующим select'ом подгружается список регионов, а затем и городов в выбранном регионе. То есть 4 зависимых select'a.

Возможно ли реализовать подобное средствами django? Несмотря на то, что в интернете есть множество сайтов, где реализована подобная "система", информация о самой реализации довольно скудна.
  • Вопрос задан
  • 494 просмотра
Пригласить эксперта
Ответы на вопрос 1
tema_sun
@tema_sun
Одним django тут не обойтись, нужен ajax.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы