Fixed #26129 -- Made invalid forms display initial values of disabled fields.

This commit is contained in:
Tim Graham 2016-01-28 13:49:51 -05:00
parent 4b0118465b
commit 04564eb74d
3 changed files with 13 additions and 0 deletions

View File

@ -167,6 +167,8 @@ class Field(object):
For most fields, this will simply be data; FileFields need to handle it For most fields, this will simply be data; FileFields need to handle it
a bit differently. a bit differently.
""" """
if self.disabled:
return initial
return data return data
def widget_attrs(self, widget): def widget_attrs(self, widget):

View File

@ -91,3 +91,6 @@ Bugfixes
* Fixed the ``contrib.gis`` map widgets when using * Fixed the ``contrib.gis`` map widgets when using
``USE_THOUSAND_SEPARATOR=True`` (:ticket:`20415`). ``USE_THOUSAND_SEPARATOR=True`` (:ticket:`20415`).
* Made invalid forms display the initial of values of their disabled fields
(:ticket:`26129`).

View File

@ -718,6 +718,14 @@ class FormsTestCase(SimpleTestCase):
{'birthday': datetime.date(1974, 8, 16), 'name': 'John Doe'} {'birthday': datetime.date(1974, 8, 16), 'name': 'John Doe'}
) )
# Initial data remains present on invalid forms.
data = {}
f1 = PersonForm(data, initial={'birthday': datetime.date(1974, 8, 16)})
f2 = PersonFormFieldInitial(data)
for form in (f1, f2):
self.assertFalse(form.is_valid())
self.assertEqual(form['birthday'].value(), datetime.date(1974, 8, 16))
def test_hidden_data(self): def test_hidden_data(self):
class SongForm(Form): class SongForm(Form):
name = CharField() name = CharField()