Я успешно реализовал то же самое, используя это: http://elo80ka.wordpress.com/2009/10/14/jquery-plugin-chained-select-lists/
РЕДАКТИРОВАТЬ:
У меня нет кода под рукой, но, адаптируясь из учебника, сначала вы создаете представления, которые возвращают соответствующий JSON:
def filter (request, model_class, field_name):
try:
kwargs = {smart_str(field_name): request.GET['q']}
except KeyError:
raise Http404
qs = model_class.objects.filter(**kwargs).values('pk', 'name')
response = HttpResponse(
content=dumps(list(qs)),
mimetype='application/json'
)
return response
РЕДАКТИРОВАТЬ 2: Для данной схемы вам нужно только изменить URL-адреса.
В ваших URL:
urlpatterns = patterns('',
url(r'^locations/filter/state-by-country/$', 'filter', {'model_class': State, 'field_name': 'country'}, name='state_filter')
url(r'^locations/filter/city-by-state/$', 'filter', {'model_class': City, 'field_name': 'state'}, name='city_filter')
...
)
В вашем шаблоне,вы бы добавили следующее (или вы можете создать js-файлы и добавить его на носитель формы, что является лучшим вариантом):
$(function() {
$('#id_state').chainedSelect({
parent: '#id_country',
url: 'locations/filter/find-by-country',
value: 'id',
label: 'name'
});
});
$(function() {
$('#id_city').chainedSelect({
parent: '#id_state',
url: 'locations/filter/find-by-state',
value: 'id',
label: 'name'
});
});
Если бы вы могли немного описать вашу схему таблицы, я мог бы помочь лучше.