mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-21 11:37:21 -06:00
16670 fix OpenAPI schema generation with nested serializers (#17078)
* 16670 fix OpenAPI schema generation with nested serializers * 16670 fix comment * Add comment; misc cleanup --------- Co-authored-by: Jeremy Stretch <jstretch@netboxlabs.com>
This commit is contained in:
parent
263664ae52
commit
4f225b4e56
@ -126,9 +126,18 @@ 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 this serializer is nested, prepend its name with "Brief"
|
||||||
|
if getattr(serializer, 'nested', False):
|
||||||
|
name = f'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
|
||||||
:param serializer: Serializer instance
|
:param serializer: Serializer instance
|
||||||
:return: Serializer's ``ref_name`` or ``None`` for inline serializer
|
:return: Serializer's ``ref_name`` or ``None`` for inline serializer
|
||||||
:rtype: str or None
|
:rtype: str or None
|
||||||
@ -137,8 +146,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'):
|
||||||
|
Loading…
Reference in New Issue
Block a user