Improve schema generation for DictField and HStoreField

Make `serializers.DictField` and `serializers.HStoreField` generate objects with `additionalProperties` defined by their `.child`.
This commit is contained in:
Jimmy Merrild Krag 2025-01-16 22:35:36 +01:00 committed by GitHub
parent 4a1d773b8f
commit d9dc01c1dc
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -500,12 +500,17 @@ class AutoSchema(ViewInspector):
'format': 'binary' '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: # Simplest cases, default to 'string' type:
FIELD_CLASS_SCHEMA_TYPE = { FIELD_CLASS_SCHEMA_TYPE = {
serializers.BooleanField: 'boolean', serializers.BooleanField: 'boolean',
serializers.JSONField: 'object', serializers.JSONField: 'object',
serializers.DictField: 'object',
serializers.HStoreField: 'object',
} }
return {'type': FIELD_CLASS_SCHEMA_TYPE.get(field.__class__, 'string')} return {'type': FIELD_CLASS_SCHEMA_TYPE.get(field.__class__, 'string')}