5

私はフォームを持っています:

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」になります。ただし、ボックスを空のままにして送信ボタンを押すと、「False」ではなく、None が返されます。それは私が望むものではありません。このチェック ボックスが True または False を返すようにします。

希望どおりに(そして期待どおりに)機能させるにはどうすればよいですか?Required Boolean フィールドが True または False を返すという私の期待は間違っていますか?

4

1 に答える 1

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

この件について深く掘り下げたくない場合は、これにより、それ以上のエラーを防ぐことができます

edit after edit after edit : required=True とマークすることで、ユーザーからの入力を明示的に要求します。デフォルトでは、チェックされていないチェックボックスは送信されず (None 値の由来はここにあります)、必要なため、検証は毎回失敗します。

于 2013-03-11T17:02:03.703 に答える