mirror of
https://github.com/django/django.git
synced 2025-10-24 22:26:08 +00:00
Fixed #24941 -- Added ModelAdmin.get_exclude().
Thanks Ola Sitarska for the initial patch.
This commit is contained in:
@@ -282,6 +282,12 @@ class BaseModelAdmin(six.with_metaclass(forms.MediaDefiningClass)):
|
||||
except AttributeError:
|
||||
return mark_safe(self.admin_site.empty_value_display)
|
||||
|
||||
def get_exclude(self, request, obj=None):
|
||||
"""
|
||||
Hook for specifying exclude.
|
||||
"""
|
||||
return self.exclude
|
||||
|
||||
def get_fields(self, request, obj=None):
|
||||
"""
|
||||
Hook for specifying fields.
|
||||
@@ -605,13 +611,11 @@ class ModelAdmin(BaseModelAdmin):
|
||||
fields = kwargs.pop('fields')
|
||||
else:
|
||||
fields = flatten_fieldsets(self.get_fieldsets(request, obj))
|
||||
if self.exclude is None:
|
||||
exclude = []
|
||||
else:
|
||||
exclude = list(self.exclude)
|
||||
excluded = self.get_exclude(request, obj)
|
||||
exclude = [] if excluded is None else list(excluded)
|
||||
readonly_fields = self.get_readonly_fields(request, obj)
|
||||
exclude.extend(readonly_fields)
|
||||
if self.exclude is None and hasattr(self.form, '_meta') and self.form._meta.exclude:
|
||||
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
|
||||
# ModelAdmin doesn't define its own.
|
||||
exclude.extend(self.form._meta.exclude)
|
||||
@@ -1851,12 +1855,10 @@ class InlineModelAdmin(BaseModelAdmin):
|
||||
fields = kwargs.pop('fields')
|
||||
else:
|
||||
fields = flatten_fieldsets(self.get_fieldsets(request, obj))
|
||||
if self.exclude is None:
|
||||
exclude = []
|
||||
else:
|
||||
exclude = list(self.exclude)
|
||||
excluded = self.get_exclude(request, obj)
|
||||
exclude = [] if excluded is None else list(excluded)
|
||||
exclude.extend(self.get_readonly_fields(request, obj))
|
||||
if self.exclude is None and hasattr(self.form, '_meta') and self.form._meta.exclude:
|
||||
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
|
||||
# InlineModelAdmin doesn't define its own.
|
||||
exclude.extend(self.form._meta.exclude)
|
||||
|
||||
Reference in New Issue
Block a user