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