From 3744fc1666c41aeb4ed44f31605bafdb413b42bc Mon Sep 17 00:00:00 2001 From: Tim Graham Date: Mon, 25 Jul 2016 14:04:39 -0400 Subject: [1.10.x] Fixed #26917 -- Fixed crash in disabled ModelChoiceFields. Partially reverted refs #25532 to fix a regression in Django 1.10. This reintroduces a crash for disabled forms.JSONField (refs #26949), however, that issue is also present on Django 1.9. Thanks Ryan Schave for the test. Backport of a5f85d891b51d7ceb4f9e422e3e4f5c741062288 from master --- django/forms/forms.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) (limited to 'django/forms/forms.py') diff --git a/django/forms/forms.py b/django/forms/forms.py index e2ed1a4ac1..25e081e324 100644 --- a/django/forms/forms.py +++ b/django/forms/forms.py @@ -373,14 +373,13 @@ class BaseForm(object): def _clean_fields(self): for name, field in self.fields.items(): - if field.disabled: - # Initial values are supposed to be clean - self.cleaned_data[name] = self.initial.get(name, field.initial) - continue # value_from_datadict() gets the data from the data dictionaries. # Each widget type knows how to retrieve its own data, because some # widgets split data over several HTML fields. - value = field.widget.value_from_datadict(self.data, self.files, self.add_prefix(name)) + if field.disabled: + value = self.initial.get(name, field.initial) + else: + value = field.widget.value_from_datadict(self.data, self.files, self.add_prefix(name)) try: if isinstance(field, FileField): initial = self.initial.get(name, field.initial) -- cgit v1.3