diff --git a/django/newforms/fields.py b/django/newforms/fields.py
index dfe46a2..e0b2199 100644
|
a
|
b
|
__all__ = (
|
| 36 | 36 | ) |
| 37 | 37 | |
| 38 | 38 | # These values, if given to to_python(), will trigger the self.required check. |
| 39 | | EMPTY_VALUES = (None, '') |
| | 39 | EMPTY_VALUES = (None, False, '') |
| 40 | 40 | |
| 41 | 41 | |
| 42 | 42 | class Field(object): |
| … |
… |
class BooleanField(Field):
|
| 535 | 535 | |
| 536 | 536 | def clean(self, value): |
| 537 | 537 | """Returns a Python boolean object.""" |
| | 538 | if value == 'False': |
| | 539 | value = False |
| 538 | 540 | super(BooleanField, self).clean(value) |
| 539 | 541 | # Explicitly check for the string 'False', which is what a hidden field |
| 540 | 542 | # will submit for False. Because bool("True") == True, we don't need to |
| 541 | 543 | # handle that explicitly. |
| 542 | | if value == 'False': |
| 543 | | return False |
| 544 | 544 | return bool(value) |
| 545 | 545 | |
| 546 | 546 | class NullBooleanField(BooleanField): |
diff --git a/tests/regressiontests/forms/fields.py b/tests/regressiontests/forms/fields.py
index f3b6a96..207ff80 100644
|
a
|
b
|
ValidationError: [u'This field is required.']
|
| 937 | 937 | >>> f.clean(True) |
| 938 | 938 | True |
| 939 | 939 | >>> f.clean(False) |
| 940 | | False |
| | 940 | Traceback (most recent call last): |
| | 941 | ... |
| | 942 | ValidationError: [u'This field is required.'] |
| 941 | 943 | >>> f.clean(1) |
| 942 | 944 | True |
| 943 | 945 | >>> f.clean(0) |
| 944 | | False |
| | 946 | Traceback (most recent call last): |
| | 947 | ... |
| | 948 | ValidationError: [u'This field is required.'] |
| 945 | 949 | >>> f.clean('Django rocks') |
| 946 | 950 | True |
| 947 | 951 | |
| 948 | 952 | >>> f.clean('True') |
| 949 | 953 | True |
| 950 | 954 | >>> f.clean('False') |
| 951 | | False |
| | 955 | Traceback (most recent call last): |
| | 956 | ... |
| | 957 | ValidationError: [u'This field is required.'] |
| 952 | 958 | |
| 953 | 959 | >>> f = BooleanField(required=False) |
| 954 | 960 | >>> f.clean('') |