Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用Django动态更新表单_Javascript_Django - Fatal编程技术网

Javascript 使用Django动态更新表单

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

我需要构建一个web表单,其中包含许多选择字段,这些字段的选择取决于前面字段的答案。这方面的一个典型示例是车辆年份>品牌>车型表单,其中品牌的选择选项在选择年份之前不会填充,而车型的选择选项在选择品牌之前不会填充。填充每个字段的sql如下所示:

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调用视图,该视图会修改下拉列表