From f3e03c9148089793bbef8c6ac47d1ea07a8afcb2 Mon Sep 17 00:00:00 2001 From: Alexandr Date: Sun, 8 Mar 2020 19:19:17 +0300 Subject: [PATCH] :construction: manual schema parse if no filter_backends specified --- rest_framework/schemas/openapi.py | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/rest_framework/schemas/openapi.py b/rest_framework/schemas/openapi.py index 1d0ec35d5..01e6555bb 100644 --- a/rest_framework/schemas/openapi.py +++ b/rest_framework/schemas/openapi.py @@ -290,12 +290,24 @@ class AutoSchema(ViewInspector): return parameters + def _get_manual_query_parameters(self, path, method): + # TODO: parse method docstring / typing / something else? + return [] + def _get_filter_parameters(self, path, method): + """ + Return a list of parameters from filter_backends if defined, or from manual implementation. + """ if not self._allows_filters(path, method): return [] + parameters = [] - for filter_backend in self.view.filter_backends: - parameters += filter_backend().get_schema_operation_parameters(self.view) + if self.view.filter_backends: + for filter_backend in self.view.filter_backends: + parameters += filter_backend().get_schema_operation_parameters(self.view) + else: + parameters += self._get_manual_query_parameters(path, method) + return parameters def _allows_filters(self, path, method):