diff --git a/rest_framework/schemas.py b/rest_framework/schemas.py index 52fcdba7c..28f5dc8a1 100644 --- a/rest_framework/schemas.py +++ b/rest_framework/schemas.py @@ -263,19 +263,18 @@ class SchemaGenerator(object): if method not in ('PUT', 'PATCH', 'POST'): return [] - if not hasattr(view, 'get_serializer_class'): + if not hasattr(view, 'get_serializer'): return [] - fields = [] - serializer = view.get_serializer() if isinstance(serializer, serializers.ListSerializer): - return coreapi.Field(name='data', location='body', required=True) + return [coreapi.Field(name='data', location='body', required=True)] if not isinstance(serializer, serializers.Serializer): return [] + fields = [] for field in serializer.fields.values(): if field.read_only: continue diff --git a/tests/test_schemas.py b/tests/test_schemas.py index 6c02c9d23..d8c0f2209 100644 --- a/tests/test_schemas.py +++ b/tests/test_schemas.py @@ -43,6 +43,10 @@ class ExampleViewSet(ModelViewSet): def custom_action(self, request, pk): return super(ExampleSerializer, self).retrieve(self, request) + def get_serializer(self, *args, **kwargs): + assert self.request + return super(ExampleViewSet, self).get_serializer(*args, **kwargs) + class ExampleView(APIView): permission_classes = [permissions.IsAuthenticatedOrReadOnly]