diff options
| -rw-r--r-- | AUTHORS | 1 | ||||
| -rw-r--r-- | django/contrib/admin/templates/admin/widgets/related_widget_wrapper.html | 2 | ||||
| -rw-r--r-- | django/contrib/admin/widgets.py | 1 | ||||
| -rw-r--r-- | tests/admin_widgets/tests.py | 23 |
4 files changed, 27 insertions, 0 deletions
@@ -329,6 +329,7 @@ answer newbie questions, and generally made Django that much better: Helen Sherwood-Taylor <helen@rrdlabs.co.uk> Henrique Romano <onaiort@gmail.com> Henry Dang <henrydangprg@gmail.com> + Hidde Bultsma Himanshu Chauhan <hchauhan1404@outlook.com> hipertracker@gmail.com Hiroki Kiyohara <hirokiky@gmail.com> diff --git a/django/contrib/admin/templates/admin/widgets/related_widget_wrapper.html b/django/contrib/admin/templates/admin/widgets/related_widget_wrapper.html index 281d331443..7cdcb334c9 100644 --- a/django/contrib/admin/templates/admin/widgets/related_widget_wrapper.html +++ b/django/contrib/admin/templates/admin/widgets/related_widget_wrapper.html @@ -3,6 +3,7 @@ {{ rendered_widget }} {% block links %} {% spaceless %} + {% if not is_hidden %} {% if can_change_related %} <a class="related-widget-wrapper-link change-related" id="change_id_{{ name }}" data-href-template="{{ change_related_template_url }}?{{ url_params }}" @@ -24,6 +25,7 @@ <img src="{% static 'admin/img/icon-deletelink.svg' %}" alt="{% trans 'Delete' %}"> </a> {% endif %} + {% endif %} {% endspaceless %} {% endblock %} </div> diff --git a/django/contrib/admin/widgets.py b/django/contrib/admin/widgets.py index 9385104d59..81dbcaf236 100644 --- a/django/contrib/admin/widgets.py +++ b/django/contrib/admin/widgets.py @@ -285,6 +285,7 @@ class RelatedFieldWidgetWrapper(forms.Widget): ]) context = { 'rendered_widget': self.widget.render(name, value, attrs), + 'is_hidden': self.is_hidden, 'name': name, 'url_params': url_params, 'model': rel_opts.verbose_name, diff --git a/tests/admin_widgets/tests.py b/tests/admin_widgets/tests.py index f7c2a7865c..623fa39bc1 100644 --- a/tests/admin_widgets/tests.py +++ b/tests/admin_widgets/tests.py @@ -687,6 +687,29 @@ class RelatedFieldWidgetWrapperTests(SimpleTestCase): wrapper = widgets.RelatedFieldWidgetWrapper(widget, rel, widget_admin_site) self.assertIs(wrapper.value_omitted_from_data({}, {}, 'band'), False) + def test_widget_is_hidden(self): + rel = Album._meta.get_field('band').remote_field + widget = forms.HiddenInput() + widget.choices = () + wrapper = widgets.RelatedFieldWidgetWrapper(widget, rel, widget_admin_site) + self.assertIs(wrapper.is_hidden, True) + context = wrapper.get_context('band', None, {}) + self.assertIs(context['is_hidden'], True) + output = wrapper.render('name', 'value') + # Related item links are hidden. + self.assertNotIn('<a ', output) + + def test_widget_is_not_hidden(self): + rel = Album._meta.get_field('band').remote_field + widget = forms.Select() + wrapper = widgets.RelatedFieldWidgetWrapper(widget, rel, widget_admin_site) + self.assertIs(wrapper.is_hidden, False) + context = wrapper.get_context('band', None, {}) + self.assertIs(context['is_hidden'], False) + output = wrapper.render('name', 'value') + # Related item links are present. + self.assertIn('<a ', output) + @override_settings(ROOT_URLCONF='admin_widgets.urls') class AdminWidgetSeleniumTestCase(AdminSeleniumTestCase): |
