summaryrefslogtreecommitdiff
path: root/django/contrib/admin/widgets.py
diff options
context:
space:
mode:
authorBrian Rosner <brosner@gmail.com>2008-09-02 06:10:14 +0000
committerBrian Rosner <brosner@gmail.com>2008-09-02 06:10:14 +0000
commit0cd5caa6a853bc12d6b09aba08e9d70f1d59c667 (patch)
tree7b8ea904afc1704e600e27623a05c8e9770d1533 /django/contrib/admin/widgets.py
parent67e141a7cdf971703ee24aeae80e3e5161d1c6a4 (diff)
Fixed #8787 -- Fixed failing admin_widgets tests. This fixes ManyToManyRawIdWidget which was broken with [8823]. Thanks Alex Gaynor.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@8846 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'django/contrib/admin/widgets.py')
-rw-r--r--django/contrib/admin/widgets.py30
1 files changed, 22 insertions, 8 deletions
diff --git a/django/contrib/admin/widgets.py b/django/contrib/admin/widgets.py
index 50e55dc4d5..32472cc7d8 100644
--- a/django/contrib/admin/widgets.py
+++ b/django/contrib/admin/widgets.py
@@ -105,13 +105,12 @@ class ForeignKeyRawIdWidget(forms.TextInput):
super(ForeignKeyRawIdWidget, self).__init__(attrs)
def render(self, name, value, attrs=None):
- from django.contrib.admin.views.main import TO_FIELD_VAR
related_url = '../../../%s/%s/' % (self.rel.to._meta.app_label, self.rel.to._meta.object_name.lower())
- params = {}
- if self.rel.limit_choices_to:
- params.update(dict([(k, ','.join(v)) for k, v in self.rel.limit_choices_to.items()]))
- params.update({TO_FIELD_VAR: self.rel.get_related_field().name})
- url = '?' + '&amp;'.join(['%s=%s' % (k, v) for k, v in params.items()])
+ params = self.url_parameters()
+ if params:
+ url = '?' + '&amp;'.join(['%s=%s' % (k, v) for k, v in params.items()])
+ else:
+ url = ''
if not attrs.has_key('class'):
attrs['class'] = 'vForeignKeyRawIdAdminField' # The JavaScript looks for this hook.
output = [super(ForeignKeyRawIdWidget, self).render(name, value, attrs)]
@@ -123,7 +122,19 @@ class ForeignKeyRawIdWidget(forms.TextInput):
if value:
output.append(self.label_for_value(value))
return mark_safe(u''.join(output))
-
+
+ def base_url_parameters(self):
+ params = {}
+ if self.rel.limit_choices_to:
+ params.update(dict([(k, ','.join(v)) for k, v in self.rel.limit_choices_to.items()]))
+ return params
+
+ def url_parameters(self):
+ from django.contrib.admin.views.main import TO_FIELD_VAR
+ params = self.base_url_parameters()
+ params.update({TO_FIELD_VAR: self.rel.get_related_field().name})
+ return params
+
def label_for_value(self, value):
key = self.rel.get_related_field().name
obj = self.rel.to.objects.get(**{key: value})
@@ -144,7 +155,10 @@ class ManyToManyRawIdWidget(ForeignKeyRawIdWidget):
else:
value = ''
return super(ManyToManyRawIdWidget, self).render(name, value, attrs)
-
+
+ def url_parameters(self):
+ return self.base_url_parameters()
+
def label_for_value(self, value):
return ''