diff --git a/src/drf_yasg/inspectors/view.py b/src/drf_yasg/inspectors/view.py index 549d39e..a76393d 100644 --- a/src/drf_yasg/inspectors/view.py +++ b/src/drf_yasg/inspectors/view.py @@ -221,7 +221,7 @@ class SwaggerAutoSchema(ViewInspector): ) elif isinstance(serializer, openapi.Response): response = serializer - if not isinstance(response.schema, openapi.Schema.OR_REF): + if hasattr(response, 'schema') and not isinstance(response.schema, openapi.Schema.OR_REF): serializer = force_serializer_instance(response.schema) response.schema = self.serializer_to_schema(serializer) elif isinstance(serializer, openapi.Schema.OR_REF): diff --git a/testproj/snippets/views.py b/testproj/snippets/views.py index 25cdb3d..f325c7e 100644 --- a/testproj/snippets/views.py +++ b/testproj/snippets/views.py @@ -1,7 +1,7 @@ from djangorestframework_camel_case.parser import CamelCaseJSONParser from djangorestframework_camel_case.render import CamelCaseJSONRenderer from inflection import camelize -from rest_framework import generics +from rest_framework import generics, status from rest_framework.parsers import FormParser from drf_yasg import openapi @@ -62,8 +62,12 @@ class SnippetDetail(generics.RetrieveUpdateDestroyAPIView): type=openapi.TYPE_INTEGER, description="path parameter override", required=True + ), + ], responses={ + status.HTTP_204_NO_CONTENT: openapi.Response( + description="This should not crash" ) - ]) + }) def delete(self, request, *args, **kwargs): """delete method docstring""" return super(SnippetDetail, self).patch(request, *args, **kwargs) diff --git a/tests/reference.yaml b/tests/reference.yaml index f6bb233..821efda 100644 --- a/tests/reference.yaml +++ b/tests/reference.yaml @@ -330,7 +330,7 @@ paths: type: integer responses: '204': - description: '' + description: This should not crash tags: - snippets parameters: