Javascript 使用Django动态更新表单
我需要构建一个web表单,其中包含许多选择字段,这些字段的选择取决于前面字段的答案。这方面的一个典型示例是车辆年份>品牌>车型表单,其中品牌的选择选项在选择年份之前不会填充,而车型的选择选项在选择品牌之前不会填充。填充每个字段的sql如下所示:Javascript 使用Django动态更新表单,javascript,django,Javascript,Django,我需要构建一个web表单,其中包含许多选择字段,这些字段的选择取决于前面字段的答案。这方面的一个典型示例是车辆年份>品牌>车型表单,其中品牌的选择选项在选择年份之前不会填充,而车型的选择选项在选择品牌之前不会填充。填充每个字段的sql如下所示: select distinct year from cars select distinct make from cars where year = [answer above] select distinct model from cars whe
select distinct year from cars
select distinct make from cars where year = [answer above]
select distinct model from cars where year = [answer above] and make = [answer above]
class CarForm(forms.Form):
year = forms.ChoiceField(choices=get_years())
make = forms.ChoiceField(choices=get_makes(year))
model = forms.ChoiceField(choices=get_models(year, make))
def save_car(request):
if request.method == 'POST':
form = CarForm(request.POST)
if form.is_valid():
handle_results(form.cleaned_data)
return HttpResponse('Success')
else:
form = CarForm()
return render_to_response('car.html', locals())
这将是一个已经在Django中实现的项目的一部分,所以我希望这也能在Django中实现。虽然我没有使用这种表单的经验,但我对支持它的异步javascript调用有着初步的了解
表单如下所示:
select distinct year from cars
select distinct make from cars where year = [answer above]
select distinct model from cars where year = [answer above] and make = [answer above]
class CarForm(forms.Form):
year = forms.ChoiceField(choices=get_years())
make = forms.ChoiceField(choices=get_makes(year))
model = forms.ChoiceField(choices=get_models(year, make))
def save_car(request):
if request.method == 'POST':
form = CarForm(request.POST)
if form.is_valid():
handle_results(form.cleaned_data)
return HttpResponse('Success')
else:
form = CarForm()
return render_to_response('car.html', locals())
视图如下所示:
select distinct year from cars
select distinct make from cars where year = [answer above]
select distinct model from cars where year = [answer above] and make = [answer above]
class CarForm(forms.Form):
year = forms.ChoiceField(choices=get_years())
make = forms.ChoiceField(choices=get_makes(year))
model = forms.ChoiceField(choices=get_models(year, make))
def save_car(request):
if request.method == 'POST':
form = CarForm(request.POST)
if form.is_valid():
handle_results(form.cleaned_data)
return HttpResponse('Success')
else:
form = CarForm()
return render_to_response('car.html', locals())
我最大的问题就是如何更新每个select字段的选项。这方面的任何帮助都将是巨大的 我建议你看看这篇文章 当您在视图中收到此ajax调用的回调时,您可以检查请求中传递的上下文。根据这些数据,您可以过滤下拉列表的结果
看起来您已经有了一些方法或函数,可以获得所需的特定细节。您可以将请求中的数据直接传递到这些文件中 您可以通过覆盖django表单\u init\u方法和模板中的javascript来实现。
检查您是否在应用程序中使用jquery?是的,jquery已经用于应用程序中的其他一些事情。然后,当所选索引更改时,通过ajax调用视图,该视图会修改下拉列表