Index: django/contrib/admin/util.py
===================================================================
--- django/contrib/admin/util.py	(revision 17865)
+++ django/contrib/admin/util.py	(working copy)
@@ -16,7 +16,11 @@
     """
     Returns True if 'distinct()' should be used to query the given lookup path.
     """
-    field_name = lookup_path.split('__', 1)[0]
+    paths=lookup_path.split('__')
+    # If we're more than one join deep, there's a very good chance for dupes
+    if len(paths)>2:
+        return True
+    field_name = paths[0]
     field = opts.get_field_by_name(field_name)[0]
     if ((hasattr(field, 'rel') and
          isinstance(field.rel, models.ManyToManyRel)) or
