diff options
| author | Manas225 <manas112madeshiya@gmail.com> | 2026-03-09 22:54:34 +0530 |
|---|---|---|
| committer | Jacob Walls <jacobtylerwalls@gmail.com> | 2026-06-11 11:02:36 -0400 |
| commit | e1df3950b2a3a852dfa9eb70738b7bac28cb0a0e (patch) | |
| tree | f87c01d99824a1799eb2856e87b445e4abb4e5f3 | |
| parent | dc4e5461faa390991e6a0f6d3ca47690e8f5c4e1 (diff) | |
Fixed #36979 -- Made GenericInlineModelAdmin.get_formset() use get_exclude().
| -rw-r--r-- | AUTHORS | 1 | ||||
| -rw-r--r-- | django/contrib/contenttypes/admin.py | 12 | ||||
| -rw-r--r-- | tests/generic_inline_admin/tests.py | 11 |
3 files changed, 18 insertions, 6 deletions
@@ -668,6 +668,7 @@ answer newbie questions, and generally made Django that much better: Mads Jensen <https://github.com/atombrella> Makoto Tsuyuki <mtsuyuki@gmail.com> Malcolm Tredinnick + Manas Madeshiya <manas112madeshiya@gmail.com> Manav Agarwal <dpsman13016@gmail.com> Manuel Saelices <msaelices@yaco.es> Manuzhai diff --git a/django/contrib/contenttypes/admin.py b/django/contrib/contenttypes/admin.py index d324a4f4fe..c55325ecbe 100644 --- a/django/contrib/contenttypes/admin.py +++ b/django/contrib/contenttypes/admin.py @@ -100,12 +100,12 @@ class GenericInlineModelAdmin(InlineModelAdmin): fields = kwargs.pop("fields") else: fields = flatten_fieldsets(self.get_fieldsets(request, obj)) - exclude = [*(self.exclude or []), *self.get_readonly_fields(request, obj)] - if ( - self.exclude is None - and hasattr(self.form, "_meta") - and self.form._meta.exclude - ): + excluded = self.get_exclude(request, obj) + exclude = [ + *(excluded or []), + *self.get_readonly_fields(request, obj), + ] + if excluded is None and hasattr(self.form, "_meta") and self.form._meta.exclude: # Take the custom ModelForm's Meta.exclude into account only if the # GenericInlineModelAdmin doesn't define its own. exclude.extend(self.form._meta.exclude) diff --git a/tests/generic_inline_admin/tests.py b/tests/generic_inline_admin/tests.py index b4833e54e7..01346f500e 100644 --- a/tests/generic_inline_admin/tests.py +++ b/tests/generic_inline_admin/tests.py @@ -577,3 +577,14 @@ class GenericInlineModelAdminTest(SimpleTestCase): request.name = name self.assertEqual(ma.get_inlines(request, None), (inline_class,)) self.assertEqual(type(ma.get_inline_instances(request)[0]), inline_class) + + def test_get_exclude_is_respected(self): + class GetExcludeInline(GenericTabularInline): + model = Media + + def get_exclude(self, request, obj=None): + return ["url"] + + ma = GetExcludeInline(Media, self.site) + formset = ma.get_formset(request) + self.assertNotIn("url", formset.form.base_fields) |
