summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJacob Kaplan-Moss <jacob@jacobian.org>2009-03-30 23:00:36 +0000
committerJacob Kaplan-Moss <jacob@jacobian.org>2009-03-30 23:00:36 +0000
commit5c321780c27b35a67c759f5062383786f98332fa (patch)
treea80464ae3e98e86e21f7d627d551206f2bcb21a2
parent843a9541eccbf2269a0b5de1e9888ae956bc953e (diff)
Fixed #8746: Check data in raw_id_fields more closely. Thanks, dgouldin
git-svn-id: http://code.djangoproject.com/svn/django/trunk@10233 bcc190cf-cafb-0310-a4f2-bffc1f526a37
-rw-r--r--django/forms/models.py3
-rw-r--r--tests/modeltests/model_forms/models.py4
2 files changed, 7 insertions, 0 deletions
diff --git a/django/forms/models.py b/django/forms/models.py
index 4b697a8233..32a85c5609 100644
--- a/django/forms/models.py
+++ b/django/forms/models.py
@@ -760,6 +760,7 @@ class ModelMultipleChoiceField(ModelChoiceField):
'list': _(u'Enter a list of values.'),
'invalid_choice': _(u'Select a valid choice. %s is not one of the'
u' available choices.'),
+ 'invalid_pk_value': _(u'"%s" is not a valid value for a primary key.')
}
def __init__(self, queryset, cache_choices=False, required=True,
@@ -782,6 +783,8 @@ class ModelMultipleChoiceField(ModelChoiceField):
obj = self.queryset.get(pk=val)
except self.queryset.model.DoesNotExist:
raise ValidationError(self.error_messages['invalid_choice'] % val)
+ except ValueError:
+ raise ValidationError(self.error_messages['invalid_pk_value'] % val)
else:
final_values.append(obj)
return final_values
diff --git a/tests/modeltests/model_forms/models.py b/tests/modeltests/model_forms/models.py
index c540319549..992bb903ba 100644
--- a/tests/modeltests/model_forms/models.py
+++ b/tests/modeltests/model_forms/models.py
@@ -857,6 +857,10 @@ ValidationError: [u'Select a valid choice. 100 is not one of the available choic
Traceback (most recent call last):
...
ValidationError: [u'Enter a list of values.']
+>>> f.clean(['fail'])
+Traceback (most recent call last):
+...
+ValidationError: [u'"fail" is not a valid value for a primary key.']
# Add a Category object *after* the ModelMultipleChoiceField has already been
# instantiated. This proves clean() checks the database during clean() rather