summaryrefslogtreecommitdiff
path: root/django/contrib/admin/checks.py
diff options
context:
space:
mode:
authorMariusz Felisiak <felisiak.mariusz@gmail.com>2023-07-07 08:06:01 +0200
committerGitHub <noreply@github.com>2023-07-07 08:06:01 +0200
commitf64fd47a7627ed6ffe2df2a32ded6ee528a784eb (patch)
tree1abf1f8f945e9b72a72d31ec00f356e1088c4538 /django/contrib/admin/checks.py
parentd569c1dcfeb26ca9ee391e5dfeadedf2b5ed4253 (diff)
Fixed #9602 -- Added AdminSite.get_model_admin().
This allows retrieving an admin class for the given model class without using internal attributes.
Diffstat (limited to 'django/contrib/admin/checks.py')
-rw-r--r--django/contrib/admin/checks.py34
1 files changed, 19 insertions, 15 deletions
diff --git a/django/contrib/admin/checks.py b/django/contrib/admin/checks.py
index 45d895dff0..f5aa9b55d4 100644
--- a/django/contrib/admin/checks.py
+++ b/django/contrib/admin/checks.py
@@ -220,6 +220,8 @@ class BaseModelAdminChecks:
ManyToManyField and that the item has a related ModelAdmin with
search_fields defined.
"""
+ from django.contrib.admin.sites import NotRegistered
+
try:
field = obj.model._meta.get_field(field_name)
except FieldDoesNotExist:
@@ -234,8 +236,9 @@ class BaseModelAdminChecks:
obj=obj,
id="admin.E038",
)
- related_admin = obj.admin_site._registry.get(field.remote_field.model)
- if related_admin is None:
+ try:
+ related_admin = obj.admin_site.get_model_admin(field.remote_field.model)
+ except NotRegistered:
return [
checks.Error(
'An admin for model "%s" has to be registered '
@@ -248,19 +251,20 @@ class BaseModelAdminChecks:
id="admin.E039",
)
]
- elif not related_admin.search_fields:
- return [
- checks.Error(
- '%s must define "search_fields", because it\'s '
- "referenced by %s.autocomplete_fields."
- % (
- related_admin.__class__.__name__,
- type(obj).__name__,
- ),
- obj=obj.__class__,
- id="admin.E040",
- )
- ]
+ else:
+ if not related_admin.search_fields:
+ return [
+ checks.Error(
+ '%s must define "search_fields", because it\'s '
+ "referenced by %s.autocomplete_fields."
+ % (
+ related_admin.__class__.__name__,
+ type(obj).__name__,
+ ),
+ obj=obj.__class__,
+ id="admin.E040",
+ )
+ ]
return []
def _check_raw_id_fields(self, obj):