Это уже некоторое время подтачивало меня.
Моя конечная цель - показать параметры параметров запроса внутри SwaggerUI и предоставить ввод формы для каждого параметра запроса. Аналогично тому, как он отображается при предоставлении сериализатора для POST.
Я использую viewet, который наследует от GenericViewSet, и я пробовал следующее:
- укажите атрибут
filter_fields
- укажите и установите атрибут
filter_backends
на(filters.DjangoFilterBackend,)
- предоставить filter_class, определенный внутри моего модуля.
- Переопределить метод
options
для предоставления[actions][GET]
информации
Вот небольшой улов, я не использую никаких моделей, поэтому я не думаю, что DjangoFilterBackend действительно поможет мне. Я использую DjangoRESTFramework, чтобы поговорить с внешним API, и я просто возвращаю результат JSON и передаю его интерфейсу.
Вот небольшой модифицированный фрагмент кода, чтобы лучше объяснить мою проблему:
views.py
class SomeViewSet(GenericViewSet):
# Note that I have all of these defined, but I have tried various combinations
filter_fields = ('query_option_1', 'query_option_2',)
filter_backeds = (filters.DjangoFilterBackend,)
filter_class = SomeFilter
query_metadata = some_dict
# This works when request is OPTIONS
def options(self, request, *args, **kwargs):
if self.metadata_class is None:
return self.http_method_not_allowed(request, *args, **kwargs)
data = self.metadata_class().determine_metadata(request, self)
data['actions']['GET'] = self.query_metadata
return Response(data, status=status.HTTP_200_OK)
filters.py
class SomeFilter(FilterSet):
strict = True
query_option_1 = django_filters.NumberFilter(name='query_option_1')
query_option_2 = django_filters.NumberFilter(name='query_option_2')
class Meta:
fields = ['query_option_1', 'query_option_2']
Спасибо, что посмотрели, и спасибо заранее за ответ.