如何使用一个dict创建两个选择菜单,其中选择菜单B的值对应并且取决于选择菜单A中的键?
在我的Django views.py中,我创建了一个字典,其中有一个Projects列表作为键,相应的Tasks作为字典中的值。它看起来像以下
项目A:任务1
项目A:任务2
项目A:任务3
项目B:任务1
项目B:任务2
项目C:任务1
等
我已经能够成功地将这些信息传递到我的Django模板中,但我无法理解如何处理我需要处理的信息。
我需要能够获取键中的信息,即项目,并创建一个下拉菜单(A),当选择一个键时,它将在一秒钟内显示该键的所有相应任务下拉菜单(B)
我可以解决任何问题。我正在考虑使用jquery和黑客攻击某些东西,但我真的不知道如何开始。有没有人有这样的经历?
答案 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.")