From e7cdb0cd7eb5eb677af8dae7bfc6845186f861b0 Mon Sep 17 00:00:00 2001 From: Etienne Chové Date: Wed, 13 Mar 2019 10:02:50 +0100 Subject: Fixed #30014 -- Fixed ModelChoiceField validation when initial value is a model instance. Thanks Carlton Gibson for reviews. --- django/forms/models.py | 2 ++ 1 file changed, 2 insertions(+) (limited to 'django/forms') diff --git a/django/forms/models.py b/django/forms/models.py index c7e7e50885..8b8be56b3b 100644 --- a/django/forms/models.py +++ b/django/forms/models.py @@ -1248,6 +1248,8 @@ class ModelChoiceField(ChoiceField): return None try: key = self.to_field_name or 'pk' + if isinstance(value, self.queryset.model): + value = getattr(value, key) value = self.queryset.get(**{key: value}) except (ValueError, TypeError, self.queryset.model.DoesNotExist): raise ValidationError(self.error_messages['invalid_choice'], code='invalid_choice') -- cgit v1.3