DRF - `write_only=True` 显示在响应模式中

Pyt*_*ast 8 python swagger django-rest-framework drf-yasg

我正在使用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')
Run Code Online (Sandbox Code Playgroud)

生成 swagger 文档时,字段status仍显示在响应字段中。从技术上讲,它不应该。

如何纠正这个?

rrr*_*try 2

很快:drf-yasg 的开发人员已经对此做出了回答。OpenAPI 2.0 规范存在问题,您可以使用https://github.com/tfranzel/drf-spectaulous(它支持 OpenAPI 3.0)而不是 drf-yasg。

您可以仅为装饰器创建特殊的序列化器

@swagger_auto_schema(responses={200: CustomResponseSerializer()})
Run Code Online (Sandbox Code Playgroud)

或者使序列化器的字段动态化(Django Rest Framework:动态返回字段子集)并像这样装饰视图集中的操作

@swagger_auto_schema(responses={200: YourSerializer(fields=['some_field_name', 'another_...')})
Run Code Online (Sandbox Code Playgroud)

另外,在https://github.com/axnsan12/drf-yasg/issues/70中,您可以从https://github.com/axnsan12/drf-yasg/issues/70#issuecomment-698288806找到另一种方法