diff --git a/django/contrib/admin/actions.py b/django/contrib/admin/actions.py index 5cc2f811e49..69374626cc0 100644 --- a/django/contrib/admin/actions.py +++ b/django/contrib/admin/actions.py @@ -68,7 +68,7 @@ def delete_selected(modeladmin, request, queryset): } # Display the confirmation page - return render_to_response(modeladmin.delete_confirmation_template or [ + return render_to_response(modeladmin.delete_selected_confirmation_template or [ "admin/%s/%s/delete_selected_confirmation.html" % (app_label, opts.object_name.lower()), "admin/%s/delete_selected_confirmation.html" % app_label, "admin/delete_selected_confirmation.html" diff --git a/django/contrib/admin/options.py b/django/contrib/admin/options.py index 7d2904002ea..6f66893c262 100644 --- a/django/contrib/admin/options.py +++ b/django/contrib/admin/options.py @@ -206,6 +206,7 @@ class ModelAdmin(BaseModelAdmin): change_form_template = None change_list_template = None delete_confirmation_template = None + delete_selected_confirmation_template = None object_history_template = None # Actions diff --git a/docs/ref/contrib/admin/index.txt b/docs/ref/contrib/admin/index.txt index e80af72f467..c779b3ca6dc 100644 --- a/docs/ref/contrib/admin/index.txt +++ b/docs/ref/contrib/admin/index.txt @@ -737,6 +737,15 @@ templates used by the :class:`ModelAdmin` views: Path to a custom template, used by :meth:`delete_view` for displaying a confirmation page when deleting one or more objects. +.. attribute:: ModelAdmin.delete_selected_confirmation_template + + .. versionadded:: 1.2 + + Path to a custom template, used by the :meth:`delete_selected` + action method for displaying a confirmation page when deleting one + or more objects. See the :ref:`actions + documentation`. + .. attribute:: ModelAdmin.object_history_template Path to a custom template, used by :meth:`history_view`. diff --git a/tests/regressiontests/admin_views/models.py b/tests/regressiontests/admin_views/models.py index e66e65fa854..be5782886fd 100644 --- a/tests/regressiontests/admin_views/models.py +++ b/tests/regressiontests/admin_views/models.py @@ -119,6 +119,7 @@ class CustomArticleAdmin(admin.ModelAdmin): add_form_template = 'custom_admin/add_form.html' object_history_template = 'custom_admin/object_history.html' delete_confirmation_template = 'custom_admin/delete_confirmation.html' + delete_selected_confirmation_template = 'custom_admin/delete_selected_confirmation.html' def changelist_view(self, request): "Test that extra_context works" diff --git a/tests/regressiontests/admin_views/tests.py b/tests/regressiontests/admin_views/tests.py index 3414ea06469..00c5db4dfb0 100644 --- a/tests/regressiontests/admin_views/tests.py +++ b/tests/regressiontests/admin_views/tests.py @@ -606,6 +606,12 @@ class AdminViewPermissionsTest(TestCase): self.assertTemplateUsed(request, 'custom_admin/change_form.html') request = self.client.get('/test_admin/admin/admin_views/customarticle/1/delete/') self.assertTemplateUsed(request, 'custom_admin/delete_confirmation.html') + request = self.client.post('/test_admin/admin/admin_views/customarticle/', data={ + 'index': 0, + 'action': ['delete_selected'], + '_selected_action': ['1'], + }) + self.assertTemplateUsed(request, 'custom_admin/delete_selected_confirmation.html') request = self.client.get('/test_admin/admin/admin_views/customarticle/1/history/') self.assertTemplateUsed(request, 'custom_admin/object_history.html') diff --git a/tests/templates/custom_admin/delete_selected_confirmation.html b/tests/templates/custom_admin/delete_selected_confirmation.html new file mode 100644 index 00000000000..92685360924 --- /dev/null +++ b/tests/templates/custom_admin/delete_selected_confirmation.html @@ -0,0 +1 @@ +{% extends "admin/delete_selected_confirmation.html" %}