我是Django的新手,如果你能给我一些指导,我真的很感激。我正在尝试创建一个允许用户勾选一个或多个选项的表单。我知道我必须将MultipleChoiceField字段与CheckboxSelectMultiple小部件一起使用,但Django文档没有提供关于此主题的示例。如果你能给我一个例子并解释我如何处理结果,我将不胜感激。例如,如果我有一个带有选项a b c d的表单,并且用户勾选c和d。另外我如何指定选项(我不想使用数据库,字符串列表是我的想法)?非常感谢
答案 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>
结果:
说明:
选择:
每个元组中的第一个元素是 要存储的实际值。第二 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]);