diff options
| author | Raphael Merx <raphaelmerx@users.noreply.github.com> | 2017-03-08 03:56:29 +0900 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2017-03-07 13:56:29 -0500 |
| commit | 2a3a0eb09231f7cade8fd945bf4af1b251df12e3 (patch) | |
| tree | 7b6ff37ecf057d7b0975d4827e74e156739be1f1 | |
| parent | 6c5348b9d2f49e0b06167ba782829e9754c05bf5 (diff) | |
Fixed #27905 -- Added RelatedFieldWidgetWrapper.value_omitted_from_data().
| -rw-r--r-- | django/contrib/admin/widgets.py | 3 | ||||
| -rw-r--r-- | docs/releases/1.10.7.txt | 3 | ||||
| -rw-r--r-- | tests/admin_widgets/tests.py | 9 |
3 files changed, 14 insertions, 1 deletions
diff --git a/django/contrib/admin/widgets.py b/django/contrib/admin/widgets.py index 9d3c22540e..588bfb58e3 100644 --- a/django/contrib/admin/widgets.py +++ b/django/contrib/admin/widgets.py @@ -303,6 +303,9 @@ class RelatedFieldWidgetWrapper(forms.Widget): def value_from_datadict(self, data, files, name): return self.widget.value_from_datadict(data, files, name) + def value_omitted_from_data(self, data, files, name): + return self.widget.value_omitted_from_data(data, files, name) + def id_for_label(self, id_): return self.widget.id_for_label(id_) diff --git a/docs/releases/1.10.7.txt b/docs/releases/1.10.7.txt index dd5cf35fba..de9a511f07 100644 --- a/docs/releases/1.10.7.txt +++ b/docs/releases/1.10.7.txt @@ -9,4 +9,5 @@ Django 1.10.7 fixes several bugs in 1.10.6. Bugfixes ======== -* ... +* Made admin's ``RelatedFieldWidgetWrapper`` use the wrapped widget's + ``value_omitted_from_data()`` method (:ticket:`27905`). diff --git a/tests/admin_widgets/tests.py b/tests/admin_widgets/tests.py index de59c26b22..b7814f966c 100644 --- a/tests/admin_widgets/tests.py +++ b/tests/admin_widgets/tests.py @@ -646,6 +646,15 @@ class RelatedFieldWidgetWrapperTests(SimpleTestCase): output = wrapper.render('name', 'value') self.assertIn('custom render output', output) + def test_widget_delegates_value_omitted_from_data(self): + class CustomWidget(forms.Select): + def value_omitted_from_data(self, data, files, name): + return False + rel = Album._meta.get_field('band').remote_field + widget = CustomWidget() + wrapper = widgets.RelatedFieldWidgetWrapper(widget, rel, widget_admin_site) + self.assertIs(wrapper.value_omitted_from_data({}, {}, 'band'), False) + @override_settings(ROOT_URLCONF='admin_widgets.urls') class AdminWidgetSeleniumTestCase(AdminSeleniumTestCase): |
