使用Django动态更新表单

时间:2013-05-31 15:36:58

标签: javascript django

我需要构建一个包含许多选择字段的Web表单,其选择取决于前面字段的答案。一个典型的例子是车辆年份>制作>模型表单,其中make的选择选项在选择年份之前不会填充,并且在选择make之前不会填充模型的选择选项。填充每个单独字段的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]

它将是已经在Django中实现的项目的一部分,所以我希望这也可以用Django实现。虽然我没有这种表单的经验,但我对必须支持它的异步javascript调用有一个基本的了解。

表格如下:

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())

我最大的问题是如何更新每个选择字段的选项。任何帮助都会很棒!

2 个答案:

答案 0 :(得分:0)

我建议您查看这篇文章on ajax with jquery in django

当您在视图中收到此ajax调用的回调时,您可以检查请求中传递的上下文。根据该数据,您可以过滤下拉列表的结果。

看起来您已经有了一些方法或功能可以为您提供所需的具体细节。您可以将请求中的数据直接传递给这些数据。

答案 1 :(得分:0)

您可以通过在模板中覆盖django表单 _ init _ 方法和javascript来实现它。 查看Here