summaryrefslogtreecommitdiff
path: root/django
diff options
context:
space:
mode:
authorJustin Bronn <jbronn@gmail.com>2010-09-11 18:34:40 +0000
committerJustin Bronn <jbronn@gmail.com>2010-09-11 18:34:40 +0000
commit9e04c3b7444ba136efa03896a67e46d2e7045e28 (patch)
treed8a99ae8f007f8cc4e337cb725b341459c4f760a /django
parentfffe0a00a383f46fdfb8de44d56f8ae2e2ee09de (diff)
Fixed #13149 -- The admin `ForeignKeyRawIdWidget` now properly handles non-integer values. Thanks, Chris Adams.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@13751 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'django')
-rw-r--r--django/contrib/admin/widgets.py6
-rw-r--r--django/forms/models.py2
2 files changed, 4 insertions, 4 deletions
diff --git a/django/contrib/admin/widgets.py b/django/contrib/admin/widgets.py
index 134effc74e..2c7ac5c794 100644
--- a/django/contrib/admin/widgets.py
+++ b/django/contrib/admin/widgets.py
@@ -154,9 +154,9 @@ class ForeignKeyRawIdWidget(forms.TextInput):
key = self.rel.get_related_field().name
try:
obj = self.rel.to._default_manager.using(self.db).get(**{key: value})
- except self.rel.to.DoesNotExist:
+ return '&nbsp;<strong>%s</strong>' % escape(truncate_words(obj, 14))
+ except (ValueError, self.rel.to.DoesNotExist):
return ''
- return '&nbsp;<strong>%s</strong>' % escape(truncate_words(obj, 14))
class ManyToManyRawIdWidget(ForeignKeyRawIdWidget):
"""
@@ -169,7 +169,7 @@ class ManyToManyRawIdWidget(ForeignKeyRawIdWidget):
def render(self, name, value, attrs=None):
attrs['class'] = 'vManyToManyRawIdAdminField'
if value:
- value = ','.join([str(v) for v in value])
+ value = ','.join([force_unicode(v) for v in value])
else:
value = ''
return super(ManyToManyRawIdWidget, self).render(name, value, attrs)
diff --git a/django/forms/models.py b/django/forms/models.py
index 607ac455fe..cf465ad30c 100644
--- a/django/forms/models.py
+++ b/django/forms/models.py
@@ -1006,7 +1006,7 @@ class ModelChoiceField(ChoiceField):
try:
key = self.to_field_name or 'pk'
value = self.queryset.get(**{key: value})
- except self.queryset.model.DoesNotExist:
+ except (ValueError, self.queryset.model.DoesNotExist):
raise ValidationError(self.error_messages['invalid_choice'])
return value