【问题标题】:How would you create two select menus where select menu B's contents are dependent on select menu A's selection?您将如何创建两个选择菜单,其中选择菜单 B 的内容取决于选择菜单 A 的选择?
【发布时间】:2016-12-12 00:53:21
【问题描述】:

如何使用一个 dict 创建两个选择菜单,其中选择菜单 B 的值对应并依赖于选择菜单 A 中存在的键?

在我的 Django views.py 中,我创建了一个字典,其中包含一个项目列表作为键,对应的任务作为字典中的值。如下所示

项目 A:任务 1

项目 A:任务 2

项目 A:任务 3

项目 B:任务 1

项目 B:任务 2

项目 C:任务 1

我已经能够成功地将这些信息传递到我的 Django 模板中,但是我不知道如何使用这些信息来做我需要做的事情。

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

我有任何解决方案。我正在考虑使用 jquery 并一起破解一些东西,但我真的不知道如何开始。有没有人有这样的经验?

【问题讨论】:

    标签: jquery python html css django


    【解决方案1】:

    您可以使用django-autocomplete-light 来执行此操作。这基本上提供了使用诸如select2 之类的客户端库的自动完成功能。但它也提供了filter results based on another field 的方法。

    您可能还应该以 clean 形式进行服务器验证:

    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.")
    

    【讨论】:

    • 太棒了,非常感谢!我会尽快调查的
    • 哇,感谢您的编辑!正是我需要的,非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-28
    • 2021-08-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多