16670 fix OpenAPI schema generation with nested serializers

This commit is contained in:
Arthur Hanson 2024-08-05 21:57:58 +07:00
parent 597fc926c0
commit 5fa0a7f102

View File

@ -126,6 +126,13 @@ class NetBoxAutoSchema(AutoSchema):
return response_serializers return response_serializers
def _get_serializer_name(self, serializer, direction, bypass_extensions=False) -> str:
name = super()._get_serializer_name(serializer, direction, bypass_extensions)
if hasattr(serializer, 'nested') and serializer.nested:
name = 'Brief' + name
return name
def get_serializer_ref_name(self, serializer): def get_serializer_ref_name(self, serializer):
# from drf-yasg.utils # from drf-yasg.utils
"""Get serializer's ref_name (or None for ModelSerializer if it is named 'NestedSerializer') """Get serializer's ref_name (or None for ModelSerializer if it is named 'NestedSerializer')
@ -137,8 +144,6 @@ class NetBoxAutoSchema(AutoSchema):
serializer_name = type(serializer).__name__ serializer_name = type(serializer).__name__
if hasattr(serializer_meta, 'ref_name'): if hasattr(serializer_meta, 'ref_name'):
ref_name = serializer_meta.ref_name ref_name = serializer_meta.ref_name
elif serializer_name == 'NestedSerializer' and isinstance(serializer, serializers.ModelSerializer):
ref_name = None
else: else:
ref_name = serializer_name ref_name = serializer_name
if ref_name.endswith('Serializer'): if ref_name.endswith('Serializer'):