diff options
| author | David Sanders <shang.xiao.sanders@gmail.com> | 2022-10-26 19:05:27 +1100 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2022-11-18 13:12:15 +0100 |
| commit | 25904db9154c5be3ecda9585d96f536841af9126 (patch) | |
| tree | 393ebc9d13c8d87bd323b59717478c2ab6a914c8 /tests/forms_tests | |
| parent | 04b15022e8d1f49af69d8a1e6cd678f31f1280ff (diff) | |
Fixed #34119 -- Prevented callable default hidden widget value from being overridden.
Thanks to Benjamin Rigaud for the report.
Diffstat (limited to 'tests/forms_tests')
| -rw-r--r-- | tests/forms_tests/tests/tests.py | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/tests/forms_tests/tests/tests.py b/tests/forms_tests/tests/tests.py index aba405db15..294e574168 100644 --- a/tests/forms_tests/tests/tests.py +++ b/tests/forms_tests/tests/tests.py @@ -203,6 +203,46 @@ class ModelFormCallableModelDefault(TestCase): """, ) + def test_callable_default_hidden_widget_value_not_overridden(self): + class FieldWithCallableDefaultsModel(models.Model): + int_field = models.IntegerField(default=lambda: 1) + json_field = models.JSONField(default=dict) + + class FieldWithCallableDefaultsModelForm(ModelForm): + class Meta: + model = FieldWithCallableDefaultsModel + fields = "__all__" + + form = FieldWithCallableDefaultsModelForm( + data={ + "initial-int_field": "1", + "int_field": "1000", + "initial-json_field": "{}", + "json_field": '{"key": "val"}', + } + ) + form_html = form.as_p() + self.assertHTMLEqual( + form_html, + """ + <p> + <label for="id_int_field">Int field:</label> + <input type="number" name="int_field" value="1000" + required id="id_int_field"> + <input type="hidden" name="initial-int_field" value="1" + id="initial-id_int_field"> + </p> + <p> + <label for="id_json_field">Json field:</label> + <textarea cols="40" id="id_json_field" name="json_field" required rows="10"> + {"key": "val"} + </textarea> + <input id="initial-id_json_field" name="initial-json_field" type="hidden" + value="{}"> + </p> + """, + ) + class FormsModelTestCase(TestCase): def test_unicode_filename(self): |
