【问题标题】:How to have a multiple select field in django in the form of a drop down box如何以下拉框的形式在 django 中有一个多选字段
【发布时间】:2014-04-24 03:51:36
【问题描述】:

非常感谢任何帮助,我是 django 的新手。

class studentRegister(forms.Form):
courseList = forms.ModelMultipleChoiceField(queryset=Courses.objects.all())

感谢您抽出宝贵时间,我只是想修改这种类型的表单,这样我就可以一次多选两个或多个选项,并且可能会在列表中返回?

【问题讨论】:

    标签: python django forms


    【解决方案1】:

    一个想法是使用 Bootstrap 类和 Python。

    forms.py

    class yourForm(forms.Form):
    options = forms.MultipleChoiceField(
        choices=[(option, option) for option in
                 Options.objects.all()], widget=forms.CheckboxSelectMultiple(),
        label="myLabel", required=True, error_messages={'required': 'myRequiredMessage'})
    

    view.py

    def anything(...):
        (...)
        form = yourForm( )
        (...)
        return render(request, "myPage.html", {'form': form})
    

    myPage.html

    (...)
    {% csrf_token %}
        {% for field in form %}
            <div class="col-md-12 dropdown">
                <button class="btn btn-primary dropdown-toggle" type="button" data-toggle="dropdown">{{ field.label_tag }}
                    <span class="caret"></span>
                </button>
                <div class="dropdown-menu">
                    <div><a href="#">{{ field }}</a></div>
                </div>
            </div>
        {% endfor %}
    (...)
    

    【讨论】:

      【解决方案2】:

      我认为您可以使用SelectMultiple 小部件。 Source

      class studentRegister(forms.Form):
          courseList = forms.ModelMultipleChoiceField(queryset=Courses.objects.all(), widget=forms.SelectMultiple)
      

      如果这不符合您的需求,您可以尝试使用此snippet

      【讨论】:

      • 对不起,这个问题可能很愚蠢,但是我该如何使用这个剪断我必须把它放在某个位置
      • 您可以创建一个widgets.py 文件。将其导入您的 forms.py 并像上面的代码一样使用它。
      • 哦,我觉得这个小部件有点过时了。编辑 widgets.py 并将 newforms 替换为 forms.
      猜你喜欢
      • 2014-07-24
      • 1970-01-01
      • 2019-07-02
      • 1970-01-01
      • 2021-07-10
      • 2017-02-18
      • 2021-05-26
      • 2018-12-12
      • 1970-01-01
      相关资源
      最近更新 更多