DRF - `write_only=True` отображается в схеме ответа

Я использую drf-yasg для документирования своих API. Тем не менее, я сталкиваюсь с проблемой

У меня есть сериализатор, в котором одно из полей установлено в write_only=True,

class XYZSerializer(serializers.ModelSerializer):
    status = serializers.BooleanField(default=True, write_only=True)

    class Meta:

        model = XYZ
        fields = ('id', 'status')

При создании документов Swagger, поле status по-прежнему отображается в полях ответа. Технически это не должно.

Как это исправить?

1 ответ

разработчики drf-yasg . Проблема в спецификации OpenAPI 2.0, и вы можете использовать https://github.com/tfranzel/drf-spectacular (он поддерживает OpenAPI 3.0) вместо drf-yasg.

Вы можете создать специальный сериализатор только для декоратора

      @swagger_auto_schema(responses={200: CustomResponseSerializer()})

или сделайте поля вашего сериализатора динамическими (Django Rest Framework: динамически возвращайте подмножество полей ) и украсьте действие в наборе представлений, как это

      @swagger_auto_schema(responses={200: YourSerializer(fields=['some_field_name', 'another_...')})

Также в Кратко: Об этом ответилиhttps://github.com/axnsan12/drf-yasg/issues/70 вы можете найти другой способ из https://github.com/axnsan12/drf-yasg/issues/70#issuecomment-698288806

Другие вопросы по тегам