Django表单复选框组

Mar*_*ark 2 django django-forms

我有一个django应用程序,通过复选框需要大量输入.

a = forms.BooleanField(required=False, initial=True)
b = forms.BooleanField(required=False, initial=True)
c = forms.BooleanField(required=False, initial=True)
Run Code Online (Sandbox Code Playgroud)

但这在模板代码中看起来很混乱,例如:

{% if form.data.a%}A{% endif %}
{% if form.data.a%}B{% endif %}
{% if form.data.a%}C{% endif %}
Run Code Online (Sandbox Code Playgroud)

我希望有一些方法可以使用复选框列表.

但这需要我拥有相同名称和不同值的所有复选框,例如:

<input type="checkbox" name="letters" value="a" />
<input type="checkbox" name="letters" value="b" />
<input type="checkbox" name="letters" value="c" />
Run Code Online (Sandbox Code Playgroud)

所以在我的模板代码中我可以说 request.POST.getlist( “letters” )

但我似乎无法找到有关如何将BooleanFields设置为具有相同名称和不同值的任何信息.

你能帮忙吗,或者有更简单的方法吗?

man*_*nji 10

看看MultipleChoiceField:

通知:

CHOICES = (
(0, 'a'),
(1, 'b'),
(2, 'c'),
)

class MyForm(forms.Form):
    letters = forms.MultipleChoiceField(
            choices=CHOICES, 
            label="...", 
            required=True/False) 
Run Code Online (Sandbox Code Playgroud)

你可以使用:

request.POST.getlist( “letters” ) 
Run Code Online (Sandbox Code Playgroud)

或者在检查表格的有效性后没有查看POST:

 form.cleaned_data.letters   
Run Code Online (Sandbox Code Playgroud)