|
@@ -586,9 +586,10 @@ class BooleanField(Field):
|
|
|
def clean(self, value):
|
|
|
"""Returns a Python boolean object."""
|
|
|
# Explicitly check for the string 'False', which is what a hidden field
|
|
|
- # will submit for False. Because bool("True") == True, we don't need to
|
|
|
- # handle that explicitly.
|
|
|
- if value == 'False':
|
|
|
+ # will submit for False. Also check for '0', since this is what
|
|
|
+ # RadioSelect will provide. Because bool("True") == bool('1') == True,
|
|
|
+ # we don't need to handle that explicitly.
|
|
|
+ if value in ('False', '0'):
|
|
|
value = False
|
|
|
else:
|
|
|
value = bool(value)
|
|
@@ -607,13 +608,13 @@ class NullBooleanField(BooleanField):
|
|
|
def clean(self, value):
|
|
|
"""
|
|
|
Explicitly checks for the string 'True' and 'False', which is what a
|
|
|
- hidden field will submit for True and False. Unlike the
|
|
|
- Booleanfield we also need to check for True, because we are not using
|
|
|
- the bool() function
|
|
|
+ hidden field will submit for True and False, and for '1' and '0', which
|
|
|
+ is what a RadioField will submit. Unlike the Booleanfield we need to
|
|
|
+ explicitly check for True, because we are not using the bool() function
|
|
|
"""
|
|
|
- if value in (True, 'True'):
|
|
|
+ if value in (True, 'True', '1'):
|
|
|
return True
|
|
|
- elif value in (False, 'False'):
|
|
|
+ elif value in (False, 'False', '0'):
|
|
|
return False
|
|
|
else:
|
|
|
return None
|