KeyError: 'required' in openapi.py · Issue #6941 · encode/django-rest-framework (original) (raw)
Checklist
- [yes] I have verified that that issue exists against the
master
branch of Django REST framework. - [yes] I have searched for similar issues in both open and closed tickets and cannot find a duplicate.
- [yes] This is not a usage question. (Those should be directed to the discussion group instead.)
- [yes] 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.)
- [yes] I have reduced the issue to the simplest possible case.
- [no] 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
- Create serializer that has no required fields
- Try to generate openapi docs for it
Expected behavior
Docs are generated
Actual behavior
KeyError: 'required'
rest_framework.schemas.openapi.AutoSchema._get_request_body
has code:
# No required fields for PATCH
if method == 'PATCH':
del content['required']
But key required
is generated by rest_framework.schemas.openapi.AutoSchema._map_serializer
:
if len(required) > 0:
result['required'] = required
So if there is no required fields in serializer KeyError will be raised. I think _get_request_body should handle deletion in this way:
# No required fields for PATCH
if method == 'PATCH and 'required' in content:
del content['required']