Index: contrib/admin/media/js/admin/RelatedObjectLookups.js
===================================================================
--- contrib/admin/media/js/admin/RelatedObjectLookups.js	(revision 7425)
+++ contrib/admin/media/js/admin/RelatedObjectLookups.js	(working copy)
@@ -26,14 +26,18 @@
     return false;
 }
 
-function dismissRelatedLookupPopup(win, chosenId) {
+function dismissRelatedLookupPopup(win, chosenId, chosenName) {
     var name = win.name.replace(/___/g, '.');
     var elem = document.getElementById(name);
+    var nameElem = document.getElementById("view_lookup_" + name);
     if (elem.className.indexOf('vManyToManyRawIdAdminField') != -1 && elem.value) {
         elem.value += ',' + chosenId;
     } else {
         document.getElementById(name).value = chosenId;
     }
+    if(nameElem) {
+      nameElem.innerHTML = chosenName;
+    }
     win.close();
 }
 
Index: contrib/admin/templatetags/admin_list.py
===================================================================
--- contrib/admin/templatetags/admin_list.py	(revision 7425)
+++ contrib/admin/templatetags/admin_list.py	(working copy)
@@ -196,8 +196,9 @@
             # Convert the pk to something that can be used in Javascript.
             # Problem cases are long ints (23L) and non-ASCII strings.
             result_id = repr(force_unicode(getattr(result, pk)))[1:]
+            result_name = str(result)
             yield mark_safe(u'<%s%s><a href="%s"%s>%s</a></%s>' % \
-                (table_tag, row_class, url, (cl.is_popup and ' onclick="opener.dismissRelatedLookupPopup(window, %s); return false;"' % result_id or ''), conditional_escape(result_repr), table_tag))
+                (table_tag, row_class, url, (cl.is_popup and ' onclick="opener.dismissRelatedLookupPopup(window, %s, %r); return false;"' % (result_id or '', result_name)), conditional_escape(result_repr), table_tag))
         else:
             yield mark_safe(u'<td%s>%s</td>' % (row_class, conditional_escape(result_repr)))
 
Index: contrib/admin/widgets.py
===================================================================
--- contrib/admin/widgets.py	(revision 7425)
+++ contrib/admin/widgets.py	(working copy)
@@ -102,12 +102,14 @@
             (related_url, url, name))
         output.append('<img src="%simg/admin/selector-search.gif" width="16" height="16" alt="Lookup"></a>' % settings.ADMIN_MEDIA_PREFIX)
         if value:
-            output.append(self.label_for_value(value))
+            # TODO: "id_" is hard-coded here. This should instead use the correct
+            # API to determine the ID dynamically.
+            output.append(self.label_for_value(value, "id_%s" % name))
         return mark_safe(u''.join(output))
     
-    def label_for_value(self, value):
-        return '&nbsp;<strong>%s</strong>' % \
-            truncate_words(self.rel.to.objects.get(pk=value), 14)
+    def label_for_value(self, value, name):
+        return '&nbsp;<strong id="view_lookup_%s">%s</strong>' % \
+            (name, truncate_words(self.rel.to.objects.get(pk=value), 14))
             
 class ManyToManyRawIdWidget(ForeignKeyRawIdWidget):
     """
