Skip to content

Commit d513b1d

Browse files
committed
fix usage with django extension JSONField
1 parent acedb1d commit d513b1d

File tree

2 files changed

+13
-3
lines changed

2 files changed

+13
-3
lines changed

django_json_widget/widgets.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import json
2-
from builtins import super
32

43
from django import forms
54
from django.conf import settings
@@ -31,7 +30,7 @@ def __init__(self, attrs=None, mode='code', options=None, width=None, height=Non
3130
self.width = width
3231
self.height = height
3332

34-
super(JSONEditorWidget, self).__init__(attrs=attrs)
33+
super().__init__(attrs=attrs)
3534

3635
def get_context(self, name, value, attrs):
3736
context = super().get_context(name, value, attrs)
@@ -42,4 +41,7 @@ def get_context(self, name, value, attrs):
4241
return context
4342

4443
def format_value(self, value):
45-
return json.loads(value)
44+
if not isinstance(value, (dict, list)):
45+
return json.loads(value)
46+
else:
47+
return value

tests/test_logic.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,14 @@ def test_format_value_none_or_empty(self):
163163
with self.assertRaises((TypeError, json.JSONDecodeError)):
164164
widget.format_value(None)
165165

166+
def test_format_value_dict(self):
167+
widget = JSONEditorWidget()
168+
self.assertEqual(widget.format_value({}), {})
169+
170+
def test_format_value_list(self):
171+
widget = JSONEditorWidget()
172+
self.assertEqual(widget.format_value([]), [])
173+
166174

167175
class JSONEditorWidgetTemplateRenderingTests(TestCase):
168176
"""Test widget template rendering"""

0 commit comments

Comments
 (0)