diff --git a/rest_framework/schemas/utils.py b/rest_framework/schemas/utils.py index 1542b6154b..76437a20a6 100644 --- a/rest_framework/schemas/utils.py +++ b/rest_framework/schemas/utils.py @@ -3,6 +3,7 @@ See schemas.__init__.py for package overview. """ +from rest_framework.mixins import RetrieveModelMixin def is_list_view(path, method, view): @@ -15,6 +16,8 @@ def is_list_view(path, method, view): if method.lower() != 'get': return False + if isinstance(view, RetrieveModelMixin): + return False path_components = path.strip('/').split('/') if path_components and '{' in path_components[-1]: return False diff --git a/tests/test_schemas.py b/tests/test_schemas.py index 6555a13b8c..901f4c6c56 100644 --- a/tests/test_schemas.py +++ b/tests/test_schemas.py @@ -19,6 +19,7 @@ AutoSchema, ManualSchema, SchemaGenerator, get_schema_view ) from rest_framework.schemas.generators import EndpointEnumerator +from rest_framework.schemas.utils import is_list_view from rest_framework.test import APIClient, APIRequestFactory from rest_framework.utils import formatting from rest_framework.views import APIView @@ -808,3 +809,15 @@ def test_from_router(self): with pytest.raises(ValueError): generator.get_schema() + + +def test_is_list_view_recognises_retrieve_view_subclasses(): + class TestView(generics.RetrieveAPIView): + pass + + path = '/looks/like/a/list/view/' + method = 'get' + view = TestView() + + is_list = is_list_view(path, method, view) + assert not is_list, "RetrieveAPIView subclasses should not be classified as list views." pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy