#23580: forms.fields.NullBooleanField does not honor required=True
-------------------------------+--------------------
Reporter: jdufresne | Owner: nobody
Type: Uncategorized | Status: new
Component: Forms | Version: master
Severity: Normal | Keywords:
Triage Stage: Unreviewed | Has patch: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------+--------------------
I use `forms.fields.NullBooleanField` to allow a user to select Yes, No or
Unknown (Unknown may also mean "no answer"). Sometimes -- depending on the
site configuration -- this field should be required, other times not. In
this case, required means that either Yes or No should be selected. The
field should *not* be left blank (Unknown or "no answer"). Currently, when
`required=True` is set, `forms.fields.NullBooleanField.validate()` does
nothing and will simply validate all values.
I can't use `forms.fields.BooleanField` because when `required=True` is
set Yes *must* be selected for the field to validate.
This topic has come up in the past: <https://groups.google.com/d/msg
/django-developers/eN7FvAvTsew/kLQ4FdE3fWAJ>
I propose `forms.fields.NullBooleanField` be altered to handle required.
That is change validate to:
{{{
def validate(self, value):
if value is None and self.required:
raise ValidationError(....
}}}
I'll happily create a pull request to achieve this. One concern will be
backwards compatibility. But seeing as how `required=True` had no effect
on the field originally, I see no reason anyone would set it and expect
something useful other than what has been suggested above.
--
Ticket URL: <https://code.djangoproject.com/ticket/23580>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
--
You received this message because you are subscribed to the Google Groups
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-updates/052.1e13a061a936cca868708095139c46c7%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.