如何创建两个选择菜单,其中选择菜单B的内容取决于选择菜单A的选择?

时间:2016-08-05 14:47:43

标签: jquery python html css django

如何使用一个dict创建两个选择菜单,其中选择菜单B的值对应并且取决于选择菜单A中的键?

在我的Django views.py中,我创建了一个字典,其中有一个Projects列表作为键,相应的Tasks作为字典中的值。它看起来像以下

项目A:任务1

项目A:任务2

项目A:任务3

项目B:任务1

项目B:任务2

项目C:任务1

我已经能够成功地将这些信息传递到我的Django模板中,但我无法理解如何处理我需要处理的信息。

我需要能够获取键中的信息,即项目,并创建一个下拉菜单(A),当选择一个键时,它将在一秒钟内显示该键的所有相应任务下拉菜单(B)

我可以解决任何问题。我正在考虑使用jquery和黑客攻击某些东西,但我真的不知道如何开始。有没有人有这样的经历?

1 个答案:

答案 0 :(得分:2)

您可以使用django-autocomplete-light执行此操作。这基本上使用select2等客户端库提供自动完成功能。但它也为filter results based on another field提供了一种方式。

您还可以在表单中进行服务器验证:

class MyForm(forms.Form):

    project = forms.ModelChoiceField(queryset=Project.objects.all())
    task = forms.Model.ChoicField(queryset=Task.objects.all())

    def clean(self):
        project = self.cleaned_data['project']
        task = self.cleaned_data['task']
        if task.project_id != project.pk:
            raise forms.ValidationError(
                "The selected task does not belong to the selected project.")