Index: django/contrib/admin/options.py
===================================================================
--- django/contrib/admin/options.py	(revision 9017)
+++ django/contrib/admin/options.py	(working copy)
@@ -38,6 +38,7 @@
     filter_horizontal = ()
     radio_fields = {}
     prepopulated_fields = {}
+    exclude_add = []
 
     def formfield_for_dbfield(self, db_field, **kwargs):
         """
@@ -137,7 +138,9 @@
                 # formfield can be None if it came from a OneToOneField with
                 # parent_link=True
                 if formfield is not None:
-                    formfield.widget = widgets.RelatedFieldWidgetWrapper(formfield.widget, db_field.rel, self.admin_site)
+                    add = db_field.name not in self.exclude_add
+                    print formfield.widget
+                    formfield.widget = widgets.RelatedFieldWidgetWrapper(formfield.widget, db_field.rel, self.admin_site, add)
             return formfield
 
         # For any other type of field, just call its formfield() method.
Index: django/contrib/admin/widgets.py
===================================================================
--- django/contrib/admin/widgets.py	(revision 9017)
+++ django/contrib/admin/widgets.py	(working copy)
@@ -196,13 +196,14 @@
     This class is a wrapper to a given widget to add the add icon for the
     admin interface.
     """
-    def __init__(self, widget, rel, admin_site):
+    def __init__(self, widget, rel, admin_site, add=True):
         self.is_hidden = widget.is_hidden
         self.needs_multipart_form = widget.needs_multipart_form
         self.attrs = widget.attrs
         self.choices = widget.choices
         self.widget = widget
         self.rel = rel
+        self.add = add
         # so we can check if the related object is registered with this AdminSite
         self.admin_site = admin_site
 
@@ -222,7 +223,8 @@
         related_url = '../../../%s/%s/' % (rel_to._meta.app_label, rel_to._meta.object_name.lower())
         self.widget.choices = self.choices
         output = [self.widget.render(name, value, *args, **kwargs)]
-        if rel_to in self.admin_site._registry: # If the related object has an admin interface:
+        # if the related object has an admin interface and we can show it
+        if self.add and rel_to in self.admin_site._registry:
             # TODO: "id_" is hard-coded here. This should instead use the correct
             # API to determine the ID dynamically.
             output.append(u'<a href="%sadd/" class="add-another" id="add_id_%s" onclick="return showAddAnotherPopup(this);"> ' % \
