diff options
| author | Russell Keith-Magee <russell@keith-magee.com> | 2011-02-19 14:45:54 +0000 |
|---|---|---|
| committer | Russell Keith-Magee <russell@keith-magee.com> | 2011-02-19 14:45:54 +0000 |
| commit | 1abf126e612fca1efec2986400e2996be8130d22 (patch) | |
| tree | 6ce137b8b4ba28ac65f4fde8657a306abdc79e69 /django/forms | |
| parent | 75a1aaa1f9341e558b6efe9227cf663d55704469 (diff) | |
Fixed #9161 -- Ensure that ModelMultipleChoiceField respects to_field_name in validation. Thanks to Honza for the report, and Gregor Müllegger for the patch.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@15587 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'django/forms')
| -rw-r--r-- | django/forms/models.py | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/django/forms/models.py b/django/forms/models.py index 2a3f8bdff2..912bdf36a8 100644 --- a/django/forms/models.py +++ b/django/forms/models.py @@ -1006,13 +1006,14 @@ class ModelMultipleChoiceField(ModelChoiceField): return [] if not isinstance(value, (list, tuple)): raise ValidationError(self.error_messages['list']) + key = self.to_field_name or 'pk' for pk in value: try: - self.queryset.filter(pk=pk) + self.queryset.filter(**{key: pk}) except ValueError: raise ValidationError(self.error_messages['invalid_pk_value'] % pk) - qs = self.queryset.filter(pk__in=value) - pks = set([force_unicode(o.pk) for o in qs]) + qs = self.queryset.filter(**{'%s__in' % key: value}) + pks = set([force_unicode(getattr(o, key)) for o in qs]) for val in value: if force_unicode(val) not in pks: raise ValidationError(self.error_messages['invalid_choice'] % val) |
