Commit 01db3249 authored by Tim Graham's avatar Tim Graham
Browse files

[1.9.x] Fixed #26129 -- Made invalid forms display initial values of disabled fields.

Backport of 04564eb7 from master
parent efd85548
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -177,6 +177,8 @@ class Field(six.with_metaclass(RenameFieldMethods, object)):
        For most fields, this will simply be data; FileFields need to handle it
        a bit differently.
        """
        if self.disabled:
            return initial
        return data

    def widget_attrs(self, widget):
+3 −0
Original line number Diff line number Diff line
@@ -91,3 +91,6 @@ Bugfixes

* Fixed the ``contrib.gis`` map widgets when using
  ``USE_THOUSAND_SEPARATOR=True`` (:ticket:`20415`).

* Made invalid forms display the initial of values of their disabled fields
  (:ticket:`26129`).
+8 −0
Original line number Diff line number Diff line
@@ -718,6 +718,14 @@ class FormsTestCase(SimpleTestCase):
                {'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):
        class SongForm(Form):
            name = CharField()