Opened 11 years ago
Last modified 10 years ago
#20982 closed Bug
forms.BooleanField field issue — at Version 2
Reported by: | george.li | Owned by: | nobody |
---|---|---|---|
Component: | Forms | Version: | 1.7 |
Severity: | Normal | Keywords: | |
Cc: | aryeh.hillman@… | Triage Stage: | Unreviewed |
Has patch: | yes | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description (last modified by )
in django 1.4 1.5.1
from django import forms forms.BooleanField().clean(True)
this case is success
But
forms.BooleanField().clean(False)
forms.BooleanField().clean('false')
in this two case are
* ValidationError: [u'This field is required.']
source code
621 class BooleanField(Field): 622 widget = CheckboxInput 623 624 def to_python(self, value): 625 ¦ """Returns a Python boolean object.""" 626 ¦ # Explicitly check for the string 'False', which is what a hidden field 627 ¦ # will submit for False. Also check for '0', since this is what 628 ¦ # RadioSelect will provide. Because bool("True") == bool('1') == True, 629 ¦ # we don't need to handle that explicitly. 630 ¦ if isinstance(value, six.string_types) and value.lower() in ('false', '0'): 631 ¦ ¦ value = False 632 ¦ else: 633 ¦ ¦ value = bool(value) 634 ¦ value = super(BooleanField, self).to_python(value) 635 ¦ if not value and self.required: 636 ¦ ¦ raise ValidationError(self.error_messages['required']) 637 ¦ return value
in 630, 'false' and '0' Transform to boolean False
but 635 then decide False is no input value
Change History (2)
comment:1 by , 11 years ago
Resolution: | → worksforme |
---|---|
Status: | new → closed |
comment:2 by , 10 years ago
Cc: | added |
---|---|
Description: | modified (diff) |
Has patch: | set |
Resolution: | worksforme |
Status: | closed → new |
Type: | Uncategorized → Bug |
Version: | 1.5 → 1.7 |
Note:
See TracTickets
for help on using tickets.
If you want the boolean field not to be required, you must create it with the
required=False
option.