Closed
Description
Checklist
- I have verified that that issue exists against the
master
branch of Django REST framework. - I have searched for similar issues in both open and closed tickets and cannot find a duplicate.
- This is not a usage question. (Those should be directed to the discussion group instead.)
- This cannot be dealt with as a third party library. (We prefer new functionality to be in the form of third party libraries where possible.)
- I have reduced the issue to the simplest possible case.
- I have included a failing test as a pull request. (If you are unable to do so we can still accept the issue.)
Steps to reproduce
For me the only logical way to create an endpoint with nested data was to use a nested serializer on GET, but a flat serializer on POST/PATCH/PUT actions. This is easily achieved by doing (from http://stackoverflow.com/a/21325719/3849359 ):
class SwappableSerializerMixin(object):
def get_serializer_class(self):
try:
return self.serializer_classes[self.request.method]
except AttributeError as e:
logger.debug('%(cls)s does not have the required serializer_classes'
'property' % {'cls': self.__class__.__name__})
raise AttributeError
except KeyError:
logger.debug('request method %(method)s is not listed'
' in %(cls)s serializer_classes' %
{'cls': self.__class__.__name__,
'method': self.request.method})
# required if you don't include all the methods (option, etc) in your serializer_class
return super(SwappableSerializerMixin, self).get_serializer_class()
However, for the docs this obviously fails, as self.request is None.
Expected behavior
Determine the serializer based on other params for the docs.
Actual behavior
AttributeError is raised, because self.request is None.