0

我需要构建一个包含许多选择字段的 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]

它将是已经在 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())

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

4

2 回答 2

0

您可以通过覆盖模板中的 django forms _ init _方法和 javascript 来实现它。在这里检查

于 2014-04-07T16:41:27.677 回答
0

我建议在 django 中使用 jquery看一下这篇关于 ajax 的帖子

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

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

于 2013-05-31T15:57:17.287 回答