summaryrefslogtreecommitdiff
path: root/django/forms
diff options
context:
space:
mode:
Diffstat (limited to 'django/forms')
-rw-r--r--django/forms/models.py7
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)