Skip to content

Commit 6c568fa

Browse files
committed
Fix JSONBoundField usage on nested serializers (#6211)
1 parent 1c3f796 commit 6c568fa

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed

rest_framework/utils/serializer_helpers.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,8 @@ def __getitem__(self, key):
118118
error = self.errors.get(key) if isinstance(self.errors, dict) else None
119119
if hasattr(field, 'fields'):
120120
return NestedBoundField(field, value, error, prefix=self.name + '.')
121+
elif type(field).__name__ == 'JSONField':
122+
return JSONBoundField(field, value, error, prefix=self.name + '.')
121123
return BoundField(field, value, error, prefix=self.name + '.')
122124

123125
def as_form_field(self):

tests/test_bound_fields.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,15 +117,26 @@ def test_as_form_fields(self):
117117
class Nested(serializers.Serializer):
118118
bool_field = serializers.BooleanField()
119119
null_field = serializers.IntegerField(allow_null=True)
120+
json_field = serializers.JSONField()
120121

121122
class ExampleSerializer(serializers.Serializer):
122123
nested = Nested()
123124

124-
serializer = ExampleSerializer(data={'nested': {'bool_field': False, 'null_field': None}})
125+
serializer = ExampleSerializer(
126+
data={'nested': {
127+
'bool_field': False, 'null_field': None,
128+
'json_field': {'bool_item': True, 'number': 1, 'text_item': 'text'},
129+
}})
125130
assert serializer.is_valid()
126131
assert serializer['nested']['bool_field'].as_form_field().value == ''
127132
assert serializer['nested']['null_field'].as_form_field().value == ''
128133

134+
assert serializer['nested']['json_field'].as_form_field().value == '''{
135+
"bool_item": true,
136+
"number": 1,
137+
"text_item": "text"
138+
}'''
139+
129140
def test_rendering_nested_fields_with_none_value(self):
130141
from rest_framework.renderers import HTMLFormRenderer
131142

0 commit comments

Comments
 (0)