diff --git a/docs/api-guide/schemas.md b/docs/api-guide/schemas.md index b9de6745fe..b4d3386d8a 100644 --- a/docs/api-guide/schemas.md +++ b/docs/api-guide/schemas.md @@ -313,6 +313,11 @@ Computes the component's name from the serializer. You may see warnings if your API has duplicate component names. If so you can override `get_component_name()` or pass the `component_name` `__init__()` kwarg (see below) to provide different names. +#### `get_reference()` + +Returns a reference to the serializer component. This may be useful if you override `get_schema()`. + + #### `map_serializer()` Maps serializers to their OpenAPI representations. diff --git a/rest_framework/schemas/openapi.py b/rest_framework/schemas/openapi.py index 5e9d59f8bf..122846376f 100644 --- a/rest_framework/schemas/openapi.py +++ b/rest_framework/schemas/openapi.py @@ -636,7 +636,7 @@ def get_response_serializer(self, path, method): """ return self.get_serializer(path, method) - def _get_reference(self, serializer): + def get_reference(self, serializer): return {'$ref': '#/components/schemas/{}'.format(self.get_component_name(serializer))} def get_request_body(self, path, method): @@ -650,7 +650,7 @@ def get_request_body(self, path, method): if not isinstance(serializer, serializers.Serializer): item_schema = {} else: - item_schema = self._get_reference(serializer) + item_schema = self.get_reference(serializer) return { 'content': { @@ -674,7 +674,7 @@ def get_responses(self, path, method): if not isinstance(serializer, serializers.Serializer): item_schema = {} else: - item_schema = self._get_reference(serializer) + item_schema = self.get_reference(serializer) if is_list_view(path, method, self.view): response_schema = { @@ -808,3 +808,11 @@ def _allows_filters(self, path, method): RemovedInDRF314Warning, stacklevel=2 ) return self.allows_filters(path, method) + + def _get_reference(self, serializer): + warnings.warn( + "Method `_get_reference()` has been renamed to `get_reference()`. " + "The old name will be removed in DRF v3.14.", + RemovedInDRF314Warning, stacklevel=2 + ) + return self.get_reference(serializer)