Opened 12 years ago
Last modified 11 years ago
#20982 closed Bug
forms.BooleanField field issue — at Initial Version
| 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
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
Note:
See TracTickets
for help on using tickets.