diff options
| author | Tim Heap <tim@ionata.com.au> | 2013-08-05 10:01:49 -0400 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2013-08-05 10:02:28 -0400 |
| commit | 75c87e2d38b181163a61ea99f2a17273274a3a2b (patch) | |
| tree | cb2395075103cdac8924d48792d8cef52a0cb5ab | |
| parent | 6d88d47be6d37234aab86d0e863e371f28347d12 (diff) | |
Fixed #20850 -- Added MultiWidget.needs_multipart_form
| -rw-r--r-- | django/forms/widgets.py | 5 | ||||
| -rw-r--r-- | tests/forms_tests/tests/test_widgets.py | 8 |
2 files changed, 13 insertions, 0 deletions
diff --git a/django/forms/widgets.py b/django/forms/widgets.py index 784ccda159..0a5059a9c2 100644 --- a/django/forms/widgets.py +++ b/django/forms/widgets.py @@ -840,6 +840,11 @@ class MultiWidget(Widget): obj.widgets = copy.deepcopy(self.widgets) return obj + @property + def needs_multipart_form(self): + return any(w.needs_multipart_form for w in self.widgets) + + class SplitDateTimeWidget(MultiWidget): """ A Widget that splits datetime input into two <input type="text"> boxes. diff --git a/tests/forms_tests/tests/test_widgets.py b/tests/forms_tests/tests/test_widgets.py index 4c566dc8e4..06ee2d6c53 100644 --- a/tests/forms_tests/tests/test_widgets.py +++ b/tests/forms_tests/tests/test_widgets.py @@ -849,6 +849,14 @@ beatle J R Ringo False""") w = MyMultiWidget(widgets=(TextInput(attrs={'class': 'big'}), TextInput(attrs={'class': 'small'})), attrs={'id': 'bar'}) self.assertHTMLEqual(w.render('name', ['john', 'lennon']), '<input id="bar_0" type="text" class="big" value="john" name="name_0" /><br /><input id="bar_1" type="text" class="small" value="lennon" name="name_1" />') + # Test needs_multipart_form=True if any widget needs it + w = MyMultiWidget(widgets=(TextInput(), FileInput())) + self.assertTrue(w.needs_multipart_form) + + # Test needs_multipart_form=False if no widget needs it + w = MyMultiWidget(widgets=(TextInput(), TextInput())) + self.assertFalse(w.needs_multipart_form) + def test_splitdatetime(self): w = SplitDateTimeWidget() self.assertHTMLEqual(w.render('date', ''), '<input type="text" name="date_0" /><input type="text" name="date_1" />') |
