Index: django/contrib/admin/util.py
===================================================================
--- django/contrib/admin/util.py	(revision 7681)
+++ django/contrib/admin/util.py	(working copy)
@@ -19,7 +19,7 @@
         return # Avoid recursing too deep.
     opts_seen = []
     for related in opts.get_all_related_objects():
-        has_admin = related.__class__ in admin_site._registry
+        has_admin = related.model in admin_site._registry
         if related.opts in opts_seen:
             continue
         opts_seen.append(related.opts)
@@ -68,7 +68,7 @@
                 if not user.has_perm(p):
                     perms_needed.add(related.opts.verbose_name)
     for related in opts.get_all_related_many_to_many_objects():
-        has_admin = related.__class__ in admin_site._registry
+        has_admin = related.model in admin_site._registry
         if related.opts in opts_seen:
             continue
         opts_seen.append(related.opts)
Index: tests/regressiontests/admin_views/fixtures/admin-views-users.xml
===================================================================
--- tests/regressiontests/admin_views/fixtures/admin-views-users.xml	(revision 7681)
+++ tests/regressiontests/admin_views/fixtures/admin-views-users.xml	(working copy)
@@ -70,8 +70,12 @@
         <field to="auth.group" name="groups" rel="ManyToManyRel"></field>
         <field to="auth.permission" name="user_permissions" rel="ManyToManyRel"></field>
     </object>
+    <object pk="1" model="admin_views.section">
+        <field type="CharField" name="name">Test section</field>
+    </object>
     <object pk="1" model="admin_views.article">
         <field type="TextField" name="content">&lt;p&gt;test content&lt;/p&gt;</field>
         <field type="DateTimeField" name="date">2008-03-18 11:54:58</field>
+        <field to="admin_views.section" name="section" rel="ManyToOneRel">1</field>
     </object>
 </django-objects>
\ No newline at end of file
Index: tests/regressiontests/admin_views/tests.py
===================================================================
--- tests/regressiontests/admin_views/tests.py	(revision 7681)
+++ tests/regressiontests/admin_views/tests.py	(working copy)
@@ -5,7 +5,7 @@
 from django.contrib.admin.sites import LOGIN_FORM_KEY, _encode_post_data
 
 # local test models
-from models import Article, CustomArticle
+from models import Article, CustomArticle, Section
 
 def get_perm(Model, perm):
     """Return the permission object, for the Model"""
@@ -40,6 +40,9 @@
         delete_user = User.objects.get(username='deleteuser')
         delete_user.user_permissions.add(get_perm(Article,
             opts.get_delete_permission()))
+
+        delete_user.user_permissions.add(get_perm(Section,
+            Section._meta.get_delete_permission()))
         
         # login POST dicts
         self.super_login = {'post_data': _encode_post_data({}),
@@ -116,7 +119,8 @@
         """Test add view restricts access and actually adds items."""
         
         add_dict = {'content': '<p>great article</p>',
-                    'date_0': '2008-03-18', 'date_1': '10:54:39'}
+                    'date_0': '2008-03-18', 'date_1': '10:54:39',
+                    'section': 1}
         
         # Change User should not have access to add articles
         self.client.get('/test_admin/admin/')
@@ -158,7 +162,8 @@
         """Change view should restrict access and allow users to edit items."""
         
         change_dict = {'content': '<p>edited article</p>',
-                    'date_0': '2008-03-18', 'date_1': '10:54:39'}
+                    'date_0': '2008-03-18', 'date_1': '10:54:39',
+                    'section': 1}
         
         # add user shoud not be able to view the list of article or change any of them
         self.client.get('/test_admin/admin/')
@@ -270,8 +275,12 @@
         # Delete user can delete
         self.client.get('/test_admin/admin/')
         self.client.post('/test_admin/admin/', self.deleteuser_login)
-        request = self.client.get('/test_admin/admin/admin_views/article/1/delete/')
-        self.failUnlessEqual(request.status_code, 200)
+        response = self.client.get('/test_admin/admin/admin_views/section/1/delete/')
+         # test response contains link to related Article
+        self.assertContains(response, "admin_views/article/1/")
+
+        response = self.client.get('/test_admin/admin/admin_views/article/1/delete/')
+        self.failUnlessEqual(response.status_code, 200)
         post = self.client.post('/test_admin/admin/admin_views/article/1/delete/', delete_dict)
         # TODO: http://code.djangoproject.com/ticket/6819 or the next line fails
         self.assertRedirects(post, '/test_admin/admin/')
Index: tests/regressiontests/admin_views/models.py
===================================================================
--- tests/regressiontests/admin_views/models.py	(revision 7681)
+++ tests/regressiontests/admin_views/models.py	(working copy)
@@ -1,12 +1,20 @@
 from django.db import models
 from django.contrib import admin
 
+class Section(models.Model):
+    """
+    A simple section that links to articles, to test linking to related items in
+    admin views.
+    """
+    name = models.CharField(max_length=100)
+
 class Article(models.Model):
     """
     A simple article to test admin views. Test backwards compabilty.
     """
     content = models.TextField()
     date = models.DateTimeField()
+    section = models.ForeignKey(Section)
 
 class ArticleAdmin(admin.ModelAdmin):
     list_display = ('content', 'date')
@@ -39,3 +47,4 @@
         
 admin.site.register(Article, ArticleAdmin)
 admin.site.register(CustomArticle, CustomArticleAdmin)
+admin.site.register(Section)
