summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoseph Kocherhans <joseph@jkocherhans.com>2007-09-09 19:15:01 +0000
committerJoseph Kocherhans <joseph@jkocherhans.com>2007-09-09 19:15:01 +0000
commitc05527dd609c26e4788df7eebb003c82033199e7 (patch)
treecec8e59c737e0c31c8a93fa0ba83988397818ece
parent4ccc5ff3e19ce6bb7e1f1cc278a44bc8daee9d85 (diff)
newforms-admin: Fixed #4491. Thanks Honza Kral.
git-svn-id: http://code.djangoproject.com/svn/django/branches/newforms-admin@6074 bcc190cf-cafb-0310-a4f2-bffc1f526a37
-rw-r--r--django/contrib/admin/options.py2
-rw-r--r--django/contrib/admin/widgets.py6
2 files changed, 5 insertions, 3 deletions
diff --git a/django/contrib/admin/options.py b/django/contrib/admin/options.py
index f1ac3521f0..03af8f50de 100644
--- a/django/contrib/admin/options.py
+++ b/django/contrib/admin/options.py
@@ -157,7 +157,7 @@ class BaseModelAdmin(object):
# Wrap the widget's render() method with a method that adds
# extra HTML to the end of the rendered output.
formfield = db_field.formfield(**kwargs)
- formfield.widget.render = widgets.RelatedFieldWidgetWrapper(formfield.widget.render, db_field.rel)
+ formfield.widget.render = widgets.RelatedFieldWidgetWrapper(formfield.widget.render, db_field.rel, self.admin_site)
return formfield
# For any other type of field, just call its formfield() method.
diff --git a/django/contrib/admin/widgets.py b/django/contrib/admin/widgets.py
index f5d0c458c9..dd0a95a8b1 100644
--- a/django/contrib/admin/widgets.py
+++ b/django/contrib/admin/widgets.py
@@ -91,15 +91,17 @@ class RelatedFieldWidgetWrapper(object):
This class is a wrapper whose __call__() method mimics the interface of a
Widget's render() method.
"""
- def __init__(self, render_func, rel):
+ def __init__(self, render_func, rel, admin_site):
self.render_func, self.rel = render_func, rel
+ # so we can check if the related object is registered with this AdminSite
+ self.admin_site = admin_site
def __call__(self, name, value, *args, **kwargs):
from django.conf import settings
rel_to = self.rel.to
related_url = '../../../%s/%s/' % (rel_to._meta.app_label, rel_to._meta.object_name.lower())
output = [self.render_func(name, value, *args, **kwargs)]
- if rel_to._meta.admin: # If the related object has an admin interface:
+ if rel_to in self.admin_site._registry: # If the related object has an admin interface:
# 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);"> ' % \