Skip to content

KeyError: 'required' in openapi.py #6941

@FeroxTL

Description

@FeroxTL

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']

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions