Генератор схемы Costum drf-yasg для поддержки вложенных сериализаторов
Я создал вложенный сериализатор, где ModelSerializer включает другой сериализатор в качестве поля. Все работает хорошо, но в документах swagger в параметрах тела примера я не вижу поля openning_time. Что я могу изменить, чтобы получить поле openning_time в документации? Я пробовал использовать swagger_auto_schema, но получил ошибку:
drf_yasg.errors.SwaggerGenerationError: укажите параметр body как схему или сериализатор в request_body
serializers.py
class WarehouseSerializer(serializers.ModelSerializer):
openning_time = OpenningTimeSerializer(many=True, read_only=True)
class Meta:
model = Warehouse
fields = ['pk', 'name', 'action_available', 'openning_time', 'workers']
views.py
class WarehouseApi(mixins.RetrieveModelMixin,
mixins.UpdateModelMixin,
mixins.ListModelMixin,
viewsets.GenericViewSet):
queryset = Warehouse.objects.all()
serializer_class = WarehouseSerializer
permission_classes = [IsAuthenticated, ]
warehouse_param_config = openapi.Parameter(
'openning_time', in_=openapi.IN_BODY, description='Description', type=openapi.TYPE_OBJECT)
@swagger_auto_schema(manual_parameters=[warehouse_param_config])
def update(self, request, *args, **kwargs):
return super().update(request, *args, **kwargs)
Тут есть экран из swagger docs и я хотел добавить информацию об openning_time, которая представлена в виде списка словарей, как показано ниже:
[
{
"weekday": 4,
"from_hour": "12:22:00",
"to_hour": "13:13:00"
},
{
"weekday": 5,
"from_hour": "16:00:00",
"to_hour": "23:00:00"
}
]
используйте декоратор, как
@swagger_auto_schema(request_body=WarehouseSerializer)
Обратитесь к документации Генерация пользовательских схем