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

Saq*_*Ali 3 django-forms

我有一个表格:

class myForm(forms.Form):        
     myBoolField = forms.BooleanField(
        label='myLabel', 
        required=True,
    )
Run Code Online (Sandbox Code Playgroud)

这是相应的模板:

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

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

我该怎么做才能使它像我想要的那样工作(并期待)?我期望必需的布尔字段返回True或False放错位置吗?

Sam*_*zzo 6

class myForm(forms.Form):        
     myBoolField = forms.BooleanField(
        label='myLabel', 
        required=False,
        initial=False
     )
Run Code Online (Sandbox Code Playgroud)

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

编辑后编辑后编辑:通过标记required = True,您明确请求用户输入.默认情况下,未提交未选中的复选框(这是None值的来源),并且由于需要,您的验证将每次都失败.