diff options
| author | Malcolm Tredinnick <malcolm.tredinnick@gmail.com> | 2007-11-29 19:22:03 +0000 |
|---|---|---|
| committer | Malcolm Tredinnick <malcolm.tredinnick@gmail.com> | 2007-11-29 19:22:03 +0000 |
| commit | 7a166f1a1c126bea547ad00387ff134ee4743b1c (patch) | |
| tree | 2cf70f6932c4588e0eccdb575e71edce50a19d54 | |
| parent | 4cbc8c62cf0f1e5408425c355cde7b021eb4a31e (diff) | |
Fixed #5959 -- Fixed handling of False values in hidden boolean fields. Thanks,
SmileyChris.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@6745 bcc190cf-cafb-0310-a4f2-bffc1f526a37
| -rw-r--r-- | django/newforms/fields.py | 9 | ||||
| -rw-r--r-- | tests/regressiontests/forms/fields.py | 10 | ||||
| -rw-r--r-- | tests/regressiontests/forms/widgets.py | 7 |
3 files changed, 22 insertions, 4 deletions
diff --git a/django/newforms/fields.py b/django/newforms/fields.py index 9bb2ced583..9b1253de1f 100644 --- a/django/newforms/fields.py +++ b/django/newforms/fields.py @@ -536,11 +536,12 @@ class BooleanField(Field): widget = CheckboxInput def clean(self, value): - "Returns a Python boolean object." + """Returns a Python boolean object.""" super(BooleanField, self).clean(value) - # Explicitly check for the string '0', which is what as hidden field - # will submit for False. - if value == '0': + # Explicitly check for the string 'False', which is what a hidden field + # will submit for False (since bool("True") == True we don't need to + # handle that explicitly). + if value == 'False': return False return bool(value) diff --git a/tests/regressiontests/forms/fields.py b/tests/regressiontests/forms/fields.py index 3b93d70338..1c436ce680 100644 --- a/tests/regressiontests/forms/fields.py +++ b/tests/regressiontests/forms/fields.py @@ -914,6 +914,11 @@ False >>> f.clean('Django rocks') True +>>> f.clean('True') +True +>>> f.clean('False') +False + >>> f = BooleanField(required=False) >>> f.clean('') False @@ -930,6 +935,11 @@ False >>> f.clean('Django rocks') True +A form's BooleanField with a hidden widget will output the string 'False', so +that should clean to the boolean value False: +>>> f.clean('False') +False + # ChoiceField ################################################################# >>> f = ChoiceField(choices=[('1', '1'), ('2', '2')]) diff --git a/tests/regressiontests/forms/widgets.py b/tests/regressiontests/forms/widgets.py index ea8cf135aa..0e69602103 100644 --- a/tests/regressiontests/forms/widgets.py +++ b/tests/regressiontests/forms/widgets.py @@ -129,6 +129,13 @@ u'<input type="hidden" class="fun" value="\u0160\u0110\u0106\u017d\u0107\u017e\u >>> w.render('email', '', attrs={'class': 'special'}) u'<input type="hidden" class="special" name="email" />' +Boolean values are rendered to their string forms ("True" and "False"). +>>> w = HiddenInput() +>>> w.render('get_spam', False) +u'<input type="hidden" name="get_spam" value="False" />' +>>> w.render('get_spam', True) +u'<input type="hidden" name="get_spam" value="True" />' + # MultipleHiddenInput Widget ################################################## >>> w = MultipleHiddenInput() |
