Opened 8 years ago

Closed 8 years ago

#27353 closed Bug (invalid)

BooleanField raises ValidationError always for RadioSelect widget value False

Reported by: Wojciech Bartosiak Owned by: nobody
Component: Forms Version: 1.10
Severity: Normal Keywords:
Cc: Triage Stage: Unreviewed
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description

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')

Change History (1)

comment:1 by Tim Graham, 8 years ago

Resolution: invalid
Status: newclosed
Type: UncategorizedBug

I don't think this is a bug. As 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.

Note: See TracTickets for help on using tickets.
Back to Top