summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRaphael Merx <raphael.merx@gmail.com>2017-03-07 12:22:45 +0900
committerTim Graham <timograham@gmail.com>2017-03-07 13:56:45 -0500
commit89b31b312e030c83e674d0b5898b51a4a460778b (patch)
tree30b3076fc0ac6cb7a8aa739153475200c87b991e
parent679560b7d80884eff2c540cfe54aad661b08453d (diff)
[1.11.x] Fixed #27905 – Added RelatedFieldWidgetWrapper.value_omitted_from_data().
Backport of fd75c8f2b7070774f6e90f408cb5cddf65b8734e from master
-rw-r--r--django/contrib/admin/widgets.py3
-rw-r--r--docs/releases/1.10.7.txt3
-rw-r--r--tests/admin_widgets/tests.py9
3 files changed, 14 insertions, 1 deletions
diff --git a/django/contrib/admin/widgets.py b/django/contrib/admin/widgets.py
index 39a906ed85..a73a83d65d 100644
--- a/django/contrib/admin/widgets.py
+++ b/django/contrib/admin/widgets.py
@@ -306,6 +306,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 8c05fa4331..f9c6d6a614 100644
--- a/tests/admin_widgets/tests.py
+++ b/tests/admin_widgets/tests.py
@@ -649,6 +649,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):