Django Forms:为什么布尔字段不像我期望的那样工作?

时间:2013-03-11 16:49:26

标签: django-forms

我有一张表格:

class myForm(forms.Form):        
     myBoolField = forms.BooleanField(
        label='myLabel', 
        required=True,
    )

以下是相应的模板:

<form action="." method="post" enctype="application/x-www-form-urlencoded"> 
    {% csrf_token %}
    {{ form.as_p }}

    <div class="form-actions">
        <button type="submit" class="btn btn-primary">Submit</button>
        <a class="btn" href="{{ secondary_action_url }}">{{ secondary_action_text }}</a>
    </div>
</form>

当Django呈现此模板时,myField显示为空复选框。 如果我选中该框,则按下提交按钮会为清除的myField值生成“True”。 但是,如果我将框保持为空并点击提交按钮,而不是获得“假”,我将获得无。那根本不是我想要的。我希望此复选框返回True或False。

我该怎么做让它像我想要的那样工作(并期待)?我期望一个必需的布尔字段返回True或False错位?

1 个答案:

答案 0 :(得分:6)

class myForm(forms.Form):        
     myBoolField = forms.BooleanField(
        label='myLabel', 
        required=False,
        initial=False
     )

如果您不想深入了解此主题,这可以防止任何进一步的错误

编辑后

编辑后编辑:通过标记required = True,您明确请求用户输入。默认情况下,未选中的复选框不会被提交(“无”值来自的位置),并且由于需要,您的验证将每次都失败。