From d9dc01c1dc356e4f870c880eeccddfdfa37d594e Mon Sep 17 00:00:00 2001 From: Jimmy Merrild Krag Date: Thu, 16 Jan 2025 22:35:36 +0100 Subject: [PATCH] Improve schema generation for DictField and HStoreField Make `serializers.DictField` and `serializers.HStoreField` generate objects with `additionalProperties` defined by their `.child`. --- rest_framework/schemas/openapi.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/rest_framework/schemas/openapi.py b/rest_framework/schemas/openapi.py index f35106fe5..8b0379876 100644 --- a/rest_framework/schemas/openapi.py +++ b/rest_framework/schemas/openapi.py @@ -500,12 +500,17 @@ class AutoSchema(ViewInspector): 'format': 'binary' } + # Also handles serializers.HStoreField, + if isinstance(field, serializers.DictField): + return { + "type": "object", + "additionalProperties": self.map_field(field.child), + } + # 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')}