diff --git a/django/contrib/admin/options.py b/django/contrib/admin/options.py index 63f5cb2b27..4f24cc4ce1 100644 --- a/django/contrib/admin/options.py +++ b/django/contrib/admin/options.py @@ -347,6 +347,7 @@ class BaseModelAdmin(metaclass=forms.MediaDefiningClass): "content_type_id": get_content_type_for_model(obj).pk, "object_id": obj.pk, }, + current_app=self.admin_site.name, ) def get_empty_value_display(self): diff --git a/tests/admin_views/tests.py b/tests/admin_views/tests.py index 0e4a6b10be..8c020cace7 100644 --- a/tests/admin_views/tests.py +++ b/tests/admin_views/tests.py @@ -7930,6 +7930,21 @@ class AdminViewOnSiteTests(TestCase): model_admin = ModelAdmin(Worker, None) self.assertIsNone(model_admin.get_view_on_site_url(Worker())) + def test_custom_admin_site(self): + model_admin = ModelAdmin(City, customadmin.site) + content_type_pk = ContentType.objects.get_for_model(City).pk + redirect_url = model_admin.get_view_on_site_url(self.c1) + self.assertEqual( + redirect_url, + reverse( + f"{customadmin.site.name}:view_on_site", + kwargs={ + "content_type_id": content_type_pk, + "object_id": self.c1.pk, + }, + ), + ) + @override_settings(ROOT_URLCONF="admin_views.urls") class InlineAdminViewOnSiteTest(TestCase):