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")]))
More like this
- Serializer factory with Django Rest Framework by julio 3 months, 2 weeks ago
- Image compression before saving the new model / work with JPG, PNG by Schleidens 4 months, 1 week ago
- Help text hyperlinks by sa2812 5 months ago
- Stuff by NixonDash 7 months, 1 week ago
- Add custom fields to the built-in Group model by jmoppel 9 months, 2 weeks ago