diff --git a/rest_framework/schemas/openapi.py b/rest_framework/schemas/openapi.py index f35106fe5a..8e89db3c15 100644 --- a/rest_framework/schemas/openapi.py +++ b/rest_framework/schemas/openapi.py @@ -500,12 +500,20 @@ def map_field(self, field): 'format': 'binary' } + # Also handles serializers.HStoreField, + if isinstance(field, serializers.DictField): + schema = { + "type": "object", + "additionalProperties": self.map_field(field.child), + } + if field.help_text: + schema["description"] = field.help_text + return schema + # Simplest cases, default to 'string' type: FIELD_CLASS_SCHEMA_TYPE = { serializers.BooleanField: 'boolean', serializers.JSONField: 'object', - serializers.DictField: 'object', - serializers.HStoreField: 'object', } return {'type': FIELD_CLASS_SCHEMA_TYPE.get(field.__class__, 'string')}