Генератор схемы 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"
    }
    ]

enter image description here

используйте декоратор, как

@swagger_auto_schema(request_body=WarehouseSerializer)

Обратитесь к документации Генерация пользовательских схем

Вернуться на верх