diff options
| author | Etienne Chové <chove@crans.org> | 2019-03-13 10:02:50 +0100 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2019-10-11 14:33:32 +0200 |
| commit | 651299e1ef896210035cf9e6992b07aa02a5aac1 (patch) | |
| tree | 4306d02f139483cc3d2000162e92ad8ec5c7f522 /django | |
| parent | 82ba905db3ec188dad866525f5e0c6897efc85e1 (diff) | |
[3.0.x] Fixed #30014 -- Fixed ModelChoiceField validation when initial value is a model instance.
Thanks Carlton Gibson for reviews.
Backport of e7cdb0cd7eb5eb677af8dae7bfc6845186f861b0 from master
Diffstat (limited to 'django')
| -rw-r--r-- | django/forms/models.py | 2 |
1 files changed, 2 insertions, 0 deletions
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') |
