summaryrefslogtreecommitdiff
path: root/django/forms
diff options
context:
space:
mode:
Diffstat (limited to 'django/forms')
-rw-r--r--django/forms/fields.py5
1 files changed, 3 insertions, 2 deletions
diff --git a/django/forms/fields.py b/django/forms/fields.py
index 7f978aa03d..8aad2d48b8 100644
--- a/django/forms/fields.py
+++ b/django/forms/fields.py
@@ -40,6 +40,7 @@ from django.forms.widgets import (
)
from django.utils import formats
from django.utils.choices import normalize_choices
+from django.utils.datastructures import OrderedSet
from django.utils.dateparse import parse_datetime, parse_duration
from django.utils.duration import duration_string
from django.utils.ipv6 import MAX_IPV6_ADDRESS_LENGTH, clean_ipv6_address
@@ -965,8 +966,8 @@ class MultipleChoiceField(ChoiceField):
if self.required and not value:
raise ValidationError(self.error_messages["required"], code="required")
# Validate that each value in the value list is in self.choices.
- # Use set() to avoid redundant validation.
- for val in set(value):
+ # Avoid redundant validation, and keep elements ordered.
+ for val in OrderedSet(value):
if not self.valid_value(val):
raise ValidationError(
self.error_messages["invalid_choice"],