Django形成多种选择

Big*_*ock 19 python django

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

DTi*_*ing 47

forms.py

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

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))
Run Code Online (Sandbox Code Playgroud)

some_template.html

<form method='post'>
    {{ form.as_p }}
    <input type='submit' value='submit'>
</form>
Run Code Online (Sandbox Code Playgroud)

结果:

checkboxselectmultiple

说明:

选择:

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

获取选中的框:

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

[u'a', u'c']
Run Code Online (Sandbox Code Playgroud)

在你的控制台中


Pau*_*ulo 19

希望这会有所帮助:D

from django import forms


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