Django form.MultipleChoiceField.自定义模板中的复选框

Iva*_*kin 6 forms django

我有这样的形式:

class PasswordForm(forms.Form):

    CHOICES=[('uppercase','Uppercase'),
            ('lowercase','Lowercase'),
            ('numbers','Numbers'),]

    password_length = forms.ChoiceField(choices=[(x, x) for x in range(1, 32)],)
    options = forms.MultipleChoiceField(
                     widget=forms.CheckboxSelectMultiple, choices=CHOICES,)
Run Code Online (Sandbox Code Playgroud)

如何在模板中自定义复选框字段?
我知道我怎么能用其他领域来做,比如forms.Charfield()我的password_length,只是

<form action="" method="post">
    {{form.some_field}}
</form>
Run Code Online (Sandbox Code Playgroud)

但它确实适用于我MultipleChoiceField,我尝试了很多东西
{{form.uppercase}},{{form.options.choices.uppercase}}并尝试{% for %}循环.
它只是没有返回,我没有通过浏览器检查器在html中看到它.

don*_*yor 2

您应该将这些选项编写为表单的字段:

class PasswordForm(forms.Form):
    uppercase = forms.CharField(widget=forms.CheckboxInput())
    lowercase = forms.CharField(widget=forms.CheckboxInput())
    numbers = forms.CharField(widget=forms.CheckboxInput())
    password_length = forms.ChoiceField(choices=[(x, x) for x in range(1, 32)],)
Run Code Online (Sandbox Code Playgroud)

然后将表单渲染到模板,并在模板中:

{{ form.uppercase }}
Run Code Online (Sandbox Code Playgroud)

将会呈现

<input name="uppercase" type="checkbox">
Run Code Online (Sandbox Code Playgroud)