Skip to content

Commit 4f225b4

Browse files
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>
1 parent 263664a commit 4f225b4

File tree

1 file changed

+10
-3
lines changed

1 file changed

+10
-3
lines changed

netbox/core/api/schema.py

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -126,9 +126,18 @@ def get_response_serializers(self) -> typing.Any:
126126

127127
return response_serializers
128128

129+
def _get_serializer_name(self, serializer, direction, bypass_extensions=False) -> str:
130+
name = super()._get_serializer_name(serializer, direction, bypass_extensions)
131+
132+
# If this serializer is nested, prepend its name with "Brief"
133+
if getattr(serializer, 'nested', False):
134+
name = f'Brief{name}'
135+
136+
return name
137+
129138
def get_serializer_ref_name(self, serializer):
130139
# from drf-yasg.utils
131-
"""Get serializer's ref_name (or None for ModelSerializer if it is named 'NestedSerializer')
140+
"""Get serializer's ref_name
132141
:param serializer: Serializer instance
133142
:return: Serializer's ``ref_name`` or ``None`` for inline serializer
134143
:rtype: str or None
@@ -137,8 +146,6 @@ def get_serializer_ref_name(self, serializer):
137146
serializer_name = type(serializer).__name__
138147
if hasattr(serializer_meta, 'ref_name'):
139148
ref_name = serializer_meta.ref_name
140-
elif serializer_name == 'NestedSerializer' and isinstance(serializer, serializers.ModelSerializer):
141-
ref_name = None
142149
else:
143150
ref_name = serializer_name
144151
if ref_name.endswith('Serializer'):

0 commit comments

Comments
 (0)