Какие есть варианты фильтрации значений Enums из документации Swagger?
Я использую Django с
drf-spectacular
пакет для создания документации Swagger. Мне было интересно, есть ли лучший подход для фильтрации некоторых значений из раздела Enum внутри схемы. Прямо сейчас я сделал это с помощью кастомного хука
preprocess_schema_enums
Перечисления указываются как поле в файле модели
hook.py
def preprocess_schema_enums(result, generator, request, public):
excluded = ['value1', 'value2']
enums_response = result['components']['schemas']['CustomEnum']['enum']
filtered = [res for res in enums_resoinse if res not in excluded]
result['components']['schemas']['CustomEnum']['enum'] = filtered
return result
1 ответ
Решение
Вы просите об индивидуальном поведении, которое отличается от того, что на самом деле делает DRF.
Нет такого количества переключателей и настроек, которые могли бы удовлетворить особые требования каждого пользователя. Хуки постобработки были разработаны именно для таких нестандартных случаев использования.
Итак, вы используете drf-Spectrum именно так, как задумано.