[Django] #27353: BooleanField raises ValidationError always for RadioSelect widget value False

9 views
Skip to first unread message

Django

unread,
Oct 15, 2016, 4:56:20 PM10/15/16
to django-...@googlegroups.com
#27353: BooleanField raises ValidationError always for RadioSelect widget value
False
-------------------------------+--------------------
Reporter: wbar | Owner: nobody
Type: Uncategorized | Status: new
Component: Forms | Version: 1.10
Severity: Normal | Keywords:
Triage Stage: Unreviewed | Has patch: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------+--------------------
**Model:**
{{{
class MyModel(models.Model):
buggy_field = models.BooleanField(default=False
}}}

**Form:**
{{{
class MyForm(forms.ModelForm):
buggy_field = forms.BooleanField(
widget=forms.RadioSelect(choices=[(True, 'Tak'), (False, 'Nie')]),)
}}}


Buggy place because value is False here:
**django.forms.fields.py+718:**
{{{
def validate(self, value):
if not value and self.required:
raise ValidationError(self.error_messages['required'],
code='required')
}}}

--
Ticket URL: <https://code.djangoproject.com/ticket/27353>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

Django

unread,
Oct 15, 2016, 7:05:05 PM10/15/16
to django-...@googlegroups.com
#27353: BooleanField raises ValidationError always for RadioSelect widget value
False
------------------------+--------------------------------------
Reporter: wbar | Owner: nobody
Type: Bug | Status: closed
Component: Forms | Version: 1.10
Severity: Normal | Resolution: invalid
Keywords: | Triage Stage: Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0

Easy pickings: 0 | UI/UX: 0
------------------------+--------------------------------------
Changes (by Tim Graham):

* status: new => closed
* resolution: => invalid
* needs_tests: => 0
* needs_better_patch: => 0
* needs_docs: => 0
* type: Uncategorized => Bug


Comment:

I don't think this is a bug. As
[https://docs.djangoproject.com/en/stable/ref/forms/fields/#booleanfield
the docs] say,

Since all `Field` subclasses have `required=True` by default, the
validation condition here is important. If you want to include a boolean
in your form that can be either `True` or `False` (e.g. a checked or
unchecked checkbox), you must remember to pass in `required=False` when
creating the `BooleanField`.

Maybe you want to use `TypedChoiceField` instead.

--
Ticket URL: <https://code.djangoproject.com/ticket/27353#comment:1>

Reply all
Reply to author
Forward
0 new messages