Index: django/contrib/admin/options.py
===================================================================
--- django/contrib/admin/options.py	(revision 6917)
+++ django/contrib/admin/options.py	(working copy)
@@ -147,7 +147,9 @@
         """
         # For ManyToManyFields with a filter interface, use a special widget.
         if isinstance(db_field, models.ManyToManyField) and db_field.name in (self.filter_vertical + self.filter_horizontal):
-            kwargs['widget'] = widgets.FilteredSelectMultiple(db_field.verbose_name, (db_field.name in self.filter_vertical))
+            # If related model has an admin interface, allow for add another popup
+            rel_to = db_field.rel.to in self.admin_site._registry and db_field.rel.to or None
+            kwargs['widget'] = widgets.FilteredSelectMultiple(db_field.verbose_name, (db_field.name in self.filter_vertical), rel_to=rel_to)
             return db_field.formfield(**kwargs)
 
         # For DateTimeFields, use a special field and widget.
Index: django/contrib/admin/widgets.py
===================================================================
--- django/contrib/admin/widgets.py	(revision 6917)
+++ django/contrib/admin/widgets.py	(working copy)
@@ -16,9 +16,10 @@
     Note that the resulting JavaScript assumes that the SelectFilter2.js
     library and its dependencies have been loaded in the HTML page.
     """
-    def __init__(self, verbose_name, is_stacked, attrs=None, choices=()):
+    def __init__(self, verbose_name, is_stacked, attrs=None, choices=(), rel_to=None):
         self.verbose_name = verbose_name
         self.is_stacked = is_stacked
+        self.rel_to = rel_to
         super(FilteredSelectMultiple, self).__init__(attrs, choices)
 
     def render(self, name, value, attrs=None, choices=()):
@@ -29,6 +30,11 @@
         # API to determine the ID dynamically.
         output.append(u'SelectFilter.init("id_%s", "%s", %s, "%s"); });</script>\n' % \
             (name, self.verbose_name.replace('"', '\\"'), int(self.is_stacked), settings.ADMIN_MEDIA_PREFIX))
+        if self.rel_to:
+            related_url = '../../../%s/%s/' % (self.rel_to._meta.app_label, self.rel_to._meta.object_name.lower())
+            output.append(u'<a href="%sadd/" class="add-another" id="add_id_%s" onclick="return showAddAnotherPopup(this);"> ' % \
+                (related_url, name))
+            output.append(u'<img src="%simg/admin/icon_addlink.gif" width="10" height="10" alt="Add Another"/></a>' % settings.ADMIN_MEDIA_PREFIX)
         return mark_safe(u''.join(output))
 
 class AdminDateWidget(forms.TextInput):
