Skip to content

Commit 39bd6cc

Browse files
Lucidiotkevin-brown
authored andcommitted
Set the proper JSON schema type for HStoreFields in OpenAPI schemas (#6914)
1 parent 5ee970c commit 39bd6cc

File tree

3 files changed

+18
-0
lines changed

3 files changed

+18
-0
lines changed

rest_framework/schemas/openapi.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -344,6 +344,7 @@ def _map_field(self, field):
344344
serializers.BooleanField: 'boolean',
345345
serializers.JSONField: 'object',
346346
serializers.DictField: 'object',
347+
serializers.HStoreField: 'object',
347348
}
348349
return {'type': FIELD_CLASS_SCHEMA_TYPE.get(field.__class__, 'string')}
349350

tests/schemas/test_openapi.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -462,6 +462,22 @@ def test_serializer_datefield(self):
462462
assert properties['date']['format'] == 'date'
463463
assert properties['datetime']['format'] == 'date-time'
464464

465+
def test_serializer_hstorefield(self):
466+
path = '/'
467+
method = 'GET'
468+
view = create_view(
469+
views.ExampleGenericAPIView,
470+
method,
471+
create_request(path),
472+
)
473+
inspector = AutoSchema()
474+
inspector.view = view
475+
476+
responses = inspector._get_responses(path, method)
477+
response_schema = responses['200']['content']['application/json']['schema']
478+
properties = response_schema['items']['properties']
479+
assert properties['hstore']['type'] == 'object'
480+
465481
def test_serializer_validators(self):
466482
path = '/'
467483
method = 'GET'

tests/schemas/views.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ def get(self, *args, **kwargs):
3333
class ExampleSerializer(serializers.Serializer):
3434
date = serializers.DateField()
3535
datetime = serializers.DateTimeField()
36+
hstore = serializers.HStoreField()
3637

3738

3839
class ExampleGenericAPIView(generics.GenericAPIView):

0 commit comments

Comments
 (0)