summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJacob Walls <jacobtylerwalls@gmail.com>2022-01-01 11:56:10 -0500
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2022-01-11 12:22:49 +0100
commitdc9deea8e85641695e489e43ed5d5638134c15c7 (patch)
tree887f578388c6a2627cc755e8de868ec498c6dc79
parentb111b15c12bb89c49006ea13d20435d2022db23a (diff)
Fixed #11715 -- Changed default value of ModelAdmin.actions/inlines to empty tuples.
This clarifies the intended pattern of overwriting the default value rather than mutating it.
-rw-r--r--django/contrib/admin/options.py4
-rw-r--r--docs/releases/4.1.txt4
-rw-r--r--tests/modeladmin/tests.py5
3 files changed, 11 insertions, 2 deletions
diff --git a/django/contrib/admin/options.py b/django/contrib/admin/options.py
index 100e481229..12cd0948ca 100644
--- a/django/contrib/admin/options.py
+++ b/django/contrib/admin/options.py
@@ -565,7 +565,7 @@ class ModelAdmin(BaseModelAdmin):
save_on_top = False
paginator = Paginator
preserve_filters = True
- inlines = []
+ inlines = ()
# Custom templates (designed to be over-ridden in subclasses)
add_form_template = None
@@ -577,7 +577,7 @@ class ModelAdmin(BaseModelAdmin):
popup_response_template = None
# Actions
- actions = []
+ actions = ()
action_form = helpers.ActionForm
actions_on_top = True
actions_on_bottom = False
diff --git a/docs/releases/4.1.txt b/docs/releases/4.1.txt
index fa1c05bc80..e3bc02f226 100644
--- a/docs/releases/4.1.txt
+++ b/docs/releases/4.1.txt
@@ -341,6 +341,10 @@ Miscellaneous
``request.META['CSRF_COOKIE']`` for storing the unmasked CSRF secret rather
than a masked version. This is an undocumented, private API.
+* The :attr:`.ModelAdmin.actions` and
+ :attr:`~django.contrib.admin.ModelAdmin.inlines` attributes now default to an
+ empty tuple rather than an empty list to discourage unintended mutation.
+
.. _deprecated-features-4.1:
Features deprecated in 4.1
diff --git a/tests/modeladmin/tests.py b/tests/modeladmin/tests.py
index 42cc369a9e..6432679735 100644
--- a/tests/modeladmin/tests.py
+++ b/tests/modeladmin/tests.py
@@ -50,6 +50,11 @@ class ModelAdminTests(TestCase):
ma = ModelAdmin(Band, self.site)
self.assertEqual(str(ma), 'modeladmin.ModelAdmin')
+ def test_default_attributes(self):
+ ma = ModelAdmin(Band, self.site)
+ self.assertEqual(ma.actions, ())
+ self.assertEqual(ma.inlines, ())
+
# form/fields/fieldsets interaction ##############################
def test_default_fields(self):