Всем привет!
Решаю довольно тривиальную задачу: надо чтобы в форме при выборе страны в следующем поле выводились только города выбранной страны.
Решила воспользоваться вариантом, описанным на сайте: http://djbook.ru/examples/52/
models.py
class Country(models.Model):
name = models.CharField(max_length=100, verbose_name='Название страны')
class Meta:
verbose_name = 'Страна'
verbose_name_plural = 'Страны'
def __unicode__(self):
return self.name
def chained_relation(self):
return self.city_set.all()
class City(models.Model):
name = models.CharField(max_length=100, verbose_name='Название города', help_text='В именительном падеже')
country = models.ForeignKey(Country)
class Meta:
verbose_name = 'Город'
verbose_name_plural = 'Города'
def __unicode__(self):
return self.name
forms.py
from django import forms
from chained_selects.widgets import ChainedSelectWidget
from hostels.models import Country, City
class SearchForm(forms.Form):
country = forms.ModelChoiceField(queryset=Country.objects.all())
city = forms.ModelChoiceField(queryset=City.objects.all())
def __init__(self, *args, **kwargs):
super(SearchForm, self).__init__(*args, **kwargs)
if 0 == len(self.data):
self.fields['city'].queryset = City.objects.none()
self.fields['city'].widget = ChainedSelectWidget(
parent_name = 'country',
app_name = 'hostels',
model_name = 'country',
method_name = 'chained_relation')
В urls.py добавила:
url(r'^chained/', include('chained_selects.urls')),
Само приложение находится в папке chained_selects, все файлы из папки src я вынула прямо в chained_selects
В итоге в первом поле отображаются страны, второе - пустое.