diff options
| author | Malcolm Tredinnick <malcolm.tredinnick@gmail.com> | 2007-10-20 12:21:07 +0000 |
|---|---|---|
| committer | Malcolm Tredinnick <malcolm.tredinnick@gmail.com> | 2007-10-20 12:21:07 +0000 |
| commit | e38d54e19a219efedb1b466d77d917bdbb3445f6 (patch) | |
| tree | 5ebaa72923e956ac1ae9cc6d8725fed7584c25d3 | |
| parent | 22ee68961a2bf44c6a395b7c746e6bdfceebf8f3 (diff) | |
Changed newforms.CheckboxInput widget to return False as its value when not
include in the form (since HTML form submission doesn't send unselected check
boxes). Patch from SmileyChris. Refs #5104.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@6563 bcc190cf-cafb-0310-a4f2-bffc1f526a37
| -rw-r--r-- | django/newforms/widgets.py | 7 | ||||
| -rw-r--r-- | tests/regressiontests/forms/widgets.py | 6 |
2 files changed, 13 insertions, 0 deletions
diff --git a/django/newforms/widgets.py b/django/newforms/widgets.py index 2c235513d0..62e2815d0b 100644 --- a/django/newforms/widgets.py +++ b/django/newforms/widgets.py @@ -170,6 +170,13 @@ class CheckboxInput(Widget): final_attrs['value'] = force_unicode(value) # Only add the 'value' attribute if a value is non-empty. return u'<input%s />' % flatatt(final_attrs) + def value_from_datadict(self, data, files, name): + if name not in data: + # A missing value means False because HTML form submission does not + # send results for unselected checkboxes. + return False + return super(CheckboxInput, self).value_from_datadict(data, files, name) + class Select(Widget): def __init__(self, attrs=None, choices=()): super(Select, self).__init__(attrs) diff --git a/tests/regressiontests/forms/widgets.py b/tests/regressiontests/forms/widgets.py index 1c3e873963..6b7c858041 100644 --- a/tests/regressiontests/forms/widgets.py +++ b/tests/regressiontests/forms/widgets.py @@ -276,6 +276,12 @@ u'<input type="checkbox" name="greeting" />' >>> w.render('greeting', None) u'<input type="checkbox" name="greeting" />' +The CheckboxInput widget will return False if the key is not found in the data +dictionary (because HTML form submission doesn't send any result for unchecked +checkboxes). +>>> w.value_from_datadict({}, {}, 'testing') +False + # Select Widget ############################################################### >>> w = Select() |
