diff --git a/django/contrib/admindocs/views.py b/django/contrib/admindocs/views.py index 245d0cf39e..f0029c35e1 100644 --- a/django/contrib/admindocs/views.py +++ b/django/contrib/admindocs/views.py @@ -266,8 +266,8 @@ class ModelDetailView(BaseAdminDocsView): # Gather related objects for rel in opts.related_objects: verbose = _("related `%(app_label)s.%(object_name)s` objects") % { - 'app_label': rel.opts.app_label, - 'object_name': rel.opts.object_name, + 'app_label': rel.related_model._meta.app_label, + 'object_name': rel.related_model._meta.object_name, } accessor = rel.get_accessor_name() fields.append({ diff --git a/docs/releases/1.8.1.txt b/docs/releases/1.8.1.txt index 5df9982a1d..9b18dea176 100644 --- a/docs/releases/1.8.1.txt +++ b/docs/releases/1.8.1.txt @@ -31,3 +31,7 @@ Bugfixes * Fixed a crash with ``QuerySet.update()`` on foreign keys to one-to-one fields (:ticket:`24578`). + +* Fixed a regression in the model detail view of + :mod:`~django.contrib.admindocs` when a model has a reverse foreign key + relation (:ticket:`24624`). diff --git a/tests/admin_docs/tests.py b/tests/admin_docs/tests.py index 0881de20ee..b4f78477df 100644 --- a/tests/admin_docs/tests.py +++ b/tests/admin_docs/tests.py @@ -290,6 +290,20 @@ class TestModelDetailView(TestDataMixin, AdminDocsTestCase): "all related %s objects" % (link % ("admin_docs.group", "admin_docs.Group")) ) + def test_model_with_many_to_one(self): + link = '%s' + response = self.client.get( + reverse('django-admindocs-models-detail', args=['admin_docs', 'company']) + ) + self.assertContains( + response, + "number of related %s objects" % (link % ("admin_docs.person", "admin_docs.Person")) + ) + self.assertContains( + response, + "all related %s objects" % (link % ("admin_docs.person", "admin_docs.Person")) + ) + def test_model_with_no_backward_relations_render_only_relevant_fields(self): """ A model with ``related_name`` of `+` should not show backward relationship