summaryrefslogtreecommitdiff
path: root/django/forms
diff options
context:
space:
mode:
authorTim Graham <timograham@gmail.com>2016-07-25 14:04:39 -0400
committerTim Graham <timograham@gmail.com>2016-07-27 08:36:49 -0400
commit3744fc1666c41aeb4ed44f31605bafdb413b42bc (patch)
treec00a9fb34536160e9ac97e878a1dc35821a866b6 /django/forms
parentd53e3c1e0743909932f9e35c98bbaa2190910f2a (diff)
[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
Diffstat (limited to 'django/forms')
-rw-r--r--django/forms/forms.py9
1 files changed, 4 insertions, 5 deletions
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)