Django形成多种选择

时间:2011-04-21 16:46:42

标签: python django

我是Django的新手,如果你能给我一些指导,我真的很感激。我正在尝试创建一个允许用户勾选一个或多个选项的表单。我知道我必须将MultipleChoiceField字段与CheckboxSelectMultiple小部件一起使用,但Django文档没有提供关于此主题的示例。如果你能给我一个例子并解释我如何处理结果,我将不胜感激。例如,如果我有一个带有选项a b c d的表单,并且用户勾选c和d。另外我如何指定选项(我不想使用数据库,字符串列表是我的想法)?非常感谢

3 个答案:

答案 0 :(得分:45)

forms.py

class SomeForm(forms.Form):
    CHOICES = (('a','a'),
               ('b','b'),
               ('c','c'),
               ('d','d'),)
    picked = forms.MultipleChoiceField(choices=CHOICES, widget=forms.CheckboxSelectMultiple())

views.py

def some_view(request):
    if request.method == 'POST':
        form = SomeForm(request.POST)
        if form.is_valid():
            picked = form.cleaned_data.get('picked')
            # do something with your results
    else:
        form = SomeForm

    return render_to_response('some_template.html', {'form':form },
        context_instance=RequestContext(request))

some_template.html

<form method='post'>
    {{ form.as_p }}
    <input type='submit' value='submit'>
</form>

结果:

checkboxselectmultiple

说明:

选择:

  

每个元组中的第一个元素是   要存储的实际值。第二   element是人类可读的名称   选项。

获取选中的框:

form.cleaned_data.get('picked')将生成“实际值”列表。例如,如果我将# do something with your results替换为print picked,您会看到:

[u'a', u'c']

在你的控制台中

答案 1 :(得分:18)

希望这会有所帮助:D

from django import forms


    class Test(forms.Form):
        OPTIONS = (
            ("a", "A"),
            ("b", "B"),
            )
        name = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple,
                                         choices=OPTIONS)

答案 2 :(得分:0)

您可以查看此https://pypi.python.org/pypi/django-multiselectfield/

function diffArray(arr1, arr2) {

    return arr1

    .concat(arr2)
    .filter(
        item => !arr1.includes(item) || !arr2.includes(item)
    )
}
diffArray([1, 2, 3, 5], [1, 2, 3, 4, 5]);