diff -r bb34df2ffc54 -r 81c9bf70b972 django/contrib/admin/views/main.py
--- a/django/contrib/admin/views/main.py	Thu Dec 13 12:30:49 2007 +1030
+++ b/django/contrib/admin/views/main.py	Thu Dec 13 12:35:53 2007 +1030
@@ -419,10 +419,10 @@ def _get_deleted_objects(deleted_objects
         return # Avoid recursing too deep.
     opts_seen = []
     for related in opts.get_all_related_objects():
-        if related.opts in opts_seen:
+        rel_opts_name = related.get_accessor_name()
+        if rel_opts_name in opts_seen:
             continue
-        opts_seen.append(related.opts)
-        rel_opts_name = related.get_accessor_name()
+        opts_seen.append(rel_opts_name)
         if isinstance(related.field.rel, models.OneToOneRel):
             try:
                 sub_obj = getattr(obj, rel_opts_name)
@@ -467,10 +467,10 @@ def _get_deleted_objects(deleted_objects
                 if not user.has_perm(p):
                     perms_needed.add(related.opts.verbose_name)
     for related in opts.get_all_related_many_to_many_objects():
-        if related.opts in opts_seen:
+        rel_opts_name = related.get_accessor_name()
+        if rel_opts_name in opts_seen:
             continue
-        opts_seen.append(related.opts)
-        rel_opts_name = related.get_accessor_name()
+        opts_seen.append(rel_opts_name)
         has_related_objs = False
 
         # related.get_accessor_name() could return None for symmetrical relationships
diff -r bb34df2ffc54 -r 81c9bf70b972 tests/regressiontests/views/fixtures/testdata.json
--- a/tests/regressiontests/views/fixtures/testdata.json	Thu Dec 13 12:30:49 2007 +1030
+++ b/tests/regressiontests/views/fixtures/testdata.json	Thu Dec 13 12:35:53 2007 +1030
@@ -28,15 +28,30 @@
             "slug": "future_article",
             "date_created": "3000-01-01 21:22:23"
         }
-    }, 
-
+    },
     {
         "pk": 1, 
         "model": "views.author", 
         "fields": {
             "name": "Boris"
         }
-    }, 
+    },
+    {
+    	"pk": 2,
+    	"model": "views.author",
+    	"fields": {
+    		"name": "Natasha"
+    	}
+    },
+    {
+    	"pk": 1,
+    	"model": "views.reviewedarticle",
+    	"fields": {
+    		"author": 1,
+    		"reviewer": 2,
+    		"title": "Reviewed Article"
+		}
+    },
     {
         "pk": 1, 
         "model": "sites.site", 
@@ -44,5 +59,23 @@
             "domain": "testserver", 
             "name": "testserver"
         }
-    }
+    },
+	{
+		"pk": 1,
+		"model": "auth.user",
+		"fields": {
+			"username": "root",
+			"first_name": "Super",
+			"last_name": "User",
+			"is_active": true,
+			"is_superuser": true,
+			"is_staff": true,
+			"last_login": "2007-12-13 11:49:43",
+			"groups": [],
+			"user_permissions": [],
+			"password": "sha1$3435d$f45ddc0acfa0db94de8ba06d2546d1661dffe6db",
+			"email": "root@localhost",
+			"date_joined": "2007-12-13 11:49:43"
+		}
+	}
 ]
diff -r bb34df2ffc54 -r 81c9bf70b972 tests/regressiontests/views/models.py
--- a/tests/regressiontests/views/models.py	Thu Dec 13 12:30:49 2007 +1030
+++ b/tests/regressiontests/views/models.py	Thu Dec 13 12:35:53 2007 +1030
@@ -8,12 +8,14 @@ class Author(models.Model):
 class Author(models.Model):
     name = models.CharField(max_length=100)
 
+    class Admin:
+        pass
+
     def __unicode__(self):
         return self.name
 
     def get_absolute_url(self):
         return '/views/authors/%s/' % self.id
-
 
 class Article(models.Model):
     title = models.CharField(max_length=100)
@@ -24,3 +26,13 @@ class Article(models.Model):
     def __unicode__(self):
         return self.title
 
+class ReviewedArticle(models.Model):
+    title = models.CharField(max_length=100)
+    author = models.ForeignKey(Author, related_name='authors')
+    reviewer = models.ForeignKey(Author, related_name='reviewers')
+
+    class Admin:
+        pass
+
+    def __unicode__(self):
+        return self.title
diff -r bb34df2ffc54 -r 81c9bf70b972 tests/regressiontests/views/tests/__init__.py
--- a/tests/regressiontests/views/tests/__init__.py	Thu Dec 13 12:30:49 2007 +1030
+++ b/tests/regressiontests/views/tests/__init__.py	Thu Dec 13 12:35:53 2007 +1030
@@ -1,4 +1,5 @@ from defaults import *
 from defaults import *
 from i18n import *
 from static import *
-from generic.date_based import *
\ No newline at end of file
+from generic.date_based import *
+from admin import *
\ No newline at end of file
diff -r bb34df2ffc54 -r 81c9bf70b972 tests/regressiontests/views/tests/admin.py
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/regressiontests/views/tests/admin.py	Thu Dec 13 12:35:53 2007 +1030
@@ -0,0 +1,10 @@
+from django.test import TestCase
+
+class AdminTests(TestCase):
+    fixtures = ['testdata.json']
+
+    def test_delete_stage(self):
+        "Delete stage includes all objects to be deleted"
+        self.assertTrue(self.client.login(username='root', password='password'))
+        response = self.client.get('/views/admin/views/author/2/delete/')
+        self.assertContains(response, "Reviewed Article")
diff -r bb34df2ffc54 -r 81c9bf70b972 tests/regressiontests/views/urls.py
--- a/tests/regressiontests/views/urls.py	Thu Dec 13 12:30:49 2007 +1030
+++ b/tests/regressiontests/views/urls.py	Thu Dec 13 12:35:53 2007 +1030
@@ -44,5 +44,8 @@ urlpatterns = patterns('',
         dict(allow_future=True, slug_field='slug', **date_based_info_dict)), 
     (r'^date_based/archive_month/(?P<year>\d{4})/(?P<month>\d{1,2})/$', 
         'django.views.generic.date_based.archive_month', 
-        date_based_info_dict),     
+        date_based_info_dict),
+
+    # Admin views
+    (r'^admin/', include('django.contrib.admin.urls')),
 )
