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
This commit is contained in:
parent
843a9541ec
commit
5c321780c2
|
@ -760,6 +760,7 @@ class ModelMultipleChoiceField(ModelChoiceField):
|
||||||
'list': _(u'Enter a list of values.'),
|
'list': _(u'Enter a list of values.'),
|
||||||
'invalid_choice': _(u'Select a valid choice. %s is not one of the'
|
'invalid_choice': _(u'Select a valid choice. %s is not one of the'
|
||||||
u' available choices.'),
|
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,
|
def __init__(self, queryset, cache_choices=False, required=True,
|
||||||
|
@ -782,6 +783,8 @@ class ModelMultipleChoiceField(ModelChoiceField):
|
||||||
obj = self.queryset.get(pk=val)
|
obj = self.queryset.get(pk=val)
|
||||||
except self.queryset.model.DoesNotExist:
|
except self.queryset.model.DoesNotExist:
|
||||||
raise ValidationError(self.error_messages['invalid_choice'] % val)
|
raise ValidationError(self.error_messages['invalid_choice'] % val)
|
||||||
|
except ValueError:
|
||||||
|
raise ValidationError(self.error_messages['invalid_pk_value'] % val)
|
||||||
else:
|
else:
|
||||||
final_values.append(obj)
|
final_values.append(obj)
|
||||||
return final_values
|
return final_values
|
||||||
|
|
|
@ -857,6 +857,10 @@ ValidationError: [u'Select a valid choice. 100 is not one of the available choic
|
||||||
Traceback (most recent call last):
|
Traceback (most recent call last):
|
||||||
...
|
...
|
||||||
ValidationError: [u'Enter a list of values.']
|
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
|
# Add a Category object *after* the ModelMultipleChoiceField has already been
|
||||||
# instantiated. This proves clean() checks the database during clean() rather
|
# instantiated. This proves clean() checks the database during clean() rather
|
||||||
|
|
Loading…
Reference in New Issue