From 774d09a7dd62a5a7c90343e08ea38bcb065ecf94 Mon Sep 17 00:00:00 2001 From: Claude Paroz Date: Sat, 11 Apr 2015 11:07:13 +0200 Subject: [PATCH] [1.8.x] Fixed #24624 -- Replaced obsoleted rel.opts in admindocs view Thanks Scott Sanders for the report, and Markus Holtermann and Tim Graham for the reviews. Refs #24381. Backport of 4e7ed8d0d from master. --- django/contrib/admindocs/views.py | 4 ++-- docs/releases/1.8.1.txt | 4 ++++ tests/admin_docs/tests.py | 14 ++++++++++++++ 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/django/contrib/admindocs/views.py b/django/contrib/admindocs/views.py index 91ca143508..394c408c91 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 08e1578c9c..fe668e2119 100644 --- a/tests/admin_docs/tests.py +++ b/tests/admin_docs/tests.py @@ -280,6 +280,20 @@ class TestModelDetailView(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