Fix request OpenAPI schemas for nested models

This commit is contained in:
Marcus Weiner 2025-01-21 17:42:43 +01:00
parent 70dddb673b
commit c232ca7acc

View File

@ -277,3 +277,21 @@ class FixSerializedPKRelatedField(OpenApiSerializerFieldExtension):
return component.ref if component else None return component.ref if component else None
else: else:
return build_basic_type(OpenApiTypes.INT) return build_basic_type(OpenApiTypes.INT)
# Nested models can be passed by ID in requests
# The logic for this is handled in `BaseModelSerializer.to_internal_value`
class FixWritableNestedSerializerAllowPK(OpenApiSerializerFieldExtension):
target_class = 'netbox.api.serializers.BaseModelSerializer'
match_subclasses = True
def map_serializer_field(self, auto_schema, direction):
schema = auto_schema._map_serializer_field(self.target, direction, bypass_extensions=True)
if direction == 'request' and self.target.nested:
return {
'oneOf': [
build_basic_type(OpenApiTypes.NUMBER),
schema,
]
}
return schema