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仍显示在响应字段中。从技术上讲,它不应该。
如何纠正这个?
很快: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找到另一种方法