- March 24, 2009
- required boolean bool boolean-field null-boolean-field
- 3 (after 3 ratings)
In our situation, we want the user to choose either yes or no. The only requirement is that they fill out the form. It is not required that they answer True/Yes.
The BooleanField treats None and False as False; The NullBooleanField distinguishes between None and False, but it doesn't raise any validation errors.
Subclassing the NullBooleanField was better than overriding the clean method on all of our NullBooleanField instances.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
# fields.py from django import forms class RequiredNullBooleanField(forms.NullBooleanField): def clean(self, value): value = super(RequiredNullBooleanField, self).clean(value) if value is None: raise forms.ValidationError("This field is required.") return value # forms.py from django import forms from project.fields import RequiredNullBooleanField class MyForm(forms.Form): question = RequiredNullBooleanField(label="Have you ever travelled in an airplane?", widget=forms.RadioSelect(choices=[(True, "Yes"), (False, "No")]))