Browse Source

Fixed #26949 -- Fixed crash of disabled forms.JSONField.

Olexander Yermakov 8 years ago
parent
commit
68de48c963
2 changed files with 10 additions and 0 deletions
  1. 2 0
      django/contrib/postgres/forms/jsonb.py
  2. 8 0
      tests/postgres_tests/test_json.py

+ 2 - 0
django/contrib/postgres/forms/jsonb.py

@@ -18,6 +18,8 @@ class JSONField(forms.CharField):
     widget = forms.Textarea
 
     def to_python(self, value):
+        if self.disabled:
+            return value
         if value in self.empty_values:
             return None
         try:

+ 8 - 0
tests/postgres_tests/test_json.py

@@ -260,6 +260,14 @@ class TestFormField(PostgreSQLTestCase):
         form_field = model_field.formfield()
         self.assertIsInstance(form_field, forms.JSONField)
 
+    def test_formfield_disabled(self):
+        class JsonForm(Form):
+            name = CharField()
+            jfield = forms.JSONField(disabled=True)
+
+        form = JsonForm({'name': 'xyz', 'jfield': '["bar"]'}, initial={'jfield': ['foo']})
+        self.assertIn('[&quot;foo&quot;]</textarea>', form.as_p())
+
     def test_prepare_value(self):
         field = forms.JSONField()
         self.assertEqual(field.prepare_value({'a': 'b'}), '{"a": "b"}')