mirror of
https://github.com/django/django.git
synced 2025-10-24 06:06:09 +00:00
Fixed #9609 -- Modified the clean method of(Null)Boolean field to accept '1' and '0' as valid inputs. Thanks to psagers for the patch.
This is required to support the use of non-default form widgets such as RadioSelect when the data comes from MySQL, which uses 1/0 to represent booleans. git-svn-id: http://code.djangoproject.com/svn/django/trunk@10660 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
@@ -1077,6 +1077,10 @@ False
|
||||
True
|
||||
>>> f.clean(0)
|
||||
False
|
||||
>>> f.clean('1')
|
||||
True
|
||||
>>> f.clean('0')
|
||||
False
|
||||
>>> f.clean('Django rocks')
|
||||
True
|
||||
|
||||
@@ -1201,7 +1205,10 @@ True
|
||||
>>> f.clean(False)
|
||||
False
|
||||
>>> f.clean(None)
|
||||
>>> f.clean('0')
|
||||
False
|
||||
>>> f.clean('1')
|
||||
True
|
||||
>>> f.clean('2')
|
||||
>>> f.clean('3')
|
||||
>>> f.clean('hello')
|
||||
@@ -1220,6 +1227,21 @@ True
|
||||
>>> f.cleaned_data['hidden_nullbool2']
|
||||
False
|
||||
|
||||
# Make sure we're compatible with MySQL, which uses 0 and 1 for its boolean
|
||||
# values. (#9609)
|
||||
>>> NULLBOOL_CHOICES = (('1', 'Yes'), ('0', 'No'), ('', 'Unknown'))
|
||||
>>> class MySQLNullBooleanForm(Form):
|
||||
... nullbool0 = NullBooleanField(widget=RadioSelect(choices=NULLBOOL_CHOICES))
|
||||
... nullbool1 = NullBooleanField(widget=RadioSelect(choices=NULLBOOL_CHOICES))
|
||||
... nullbool2 = NullBooleanField(widget=RadioSelect(choices=NULLBOOL_CHOICES))
|
||||
>>> f = MySQLNullBooleanForm({ 'nullbool0': '1', 'nullbool1': '0', 'nullbool2': '' })
|
||||
>>> f.full_clean()
|
||||
>>> f.cleaned_data['nullbool0']
|
||||
True
|
||||
>>> f.cleaned_data['nullbool1']
|
||||
False
|
||||
>>> f.cleaned_data['nullbool2']
|
||||
|
||||
# MultipleChoiceField #########################################################
|
||||
|
||||
>>> f = MultipleChoiceField(choices=[('1', 'One'), ('2', 'Two')])
|
||||
|
||||
Reference in New Issue
Block a user