Index: django/contrib/admin/util.py
===================================================================
--- django/contrib/admin/util.py	(revision 10977)
+++ django/contrib/admin/util.py	(working copy)
@@ -71,7 +71,7 @@
     except NoReverseMatch:
         return '%s%s/%s/%s/' % ('../'*levels_to_root, app_label, module_name, pk)
 
-def get_deleted_objects(deleted_objects, perms_needed, user, obj, opts, current_depth, admin_site, levels_to_root=4):
+def get_deleted_objects(deleted_objects, perms_needed, user, obj, opts, current_depth, admin_site, levels_to_root=4, opts_seen=[]):
     """
     Helper function that recursively populates deleted_objects.
 
@@ -85,7 +85,6 @@
     nh = _nest_help # Bind to local variable for performance
     if current_depth > 16:
         return # Avoid recursing too deep.
-    opts_seen = []
     for related in opts.get_all_related_objects():
         has_admin = related.model in admin_site._registry
         if related.opts in opts_seen:
@@ -119,7 +118,7 @@
                                             admin_site,
                                             levels_to_root),
                         escape(sub_obj))), []])
-                get_deleted_objects(deleted_objects, perms_needed, user, sub_obj, related.opts, current_depth+2, admin_site)
+                get_deleted_objects(deleted_objects, perms_needed, user, sub_obj, related.opts, current_depth+2, admin_site, opts_seen=opts_seen)
         else:
             has_related_objs = False
             for sub_obj in getattr(obj, rel_opts_name).all():
@@ -139,7 +138,7 @@
                                             admin_site,
                                             levels_to_root),
                         escape(sub_obj))), []])
-                get_deleted_objects(deleted_objects, perms_needed, user, sub_obj, related.opts, current_depth+2, admin_site)
+                get_deleted_objects(deleted_objects, perms_needed, user, sub_obj, related.opts, current_depth+2, admin_site, opts_seen=opts_seen)
             # If there were related objects, and the user doesn't have
             # permission to delete them, add the missing perm to perms_needed.
             if has_admin and has_related_objs:
