python - 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
仍显示在响应字段中。从技术上讲,它不应该。
如何纠正这个?
解决方案
很快: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找到另一种方式
推荐阅读
- node.js - nodejs上的socket.io - 套接字离开空间不起作用
- android - 存储访问框架 - 文件夹中的文件操作产生的事件
- ios - iOS 13.x 上的 CoreData NSExpression "max:" 函数行为
- reactjs - 使用 React 和 AspnetCore 下载大文件以打开浏览器保存(标题)
- javascript - 当我需要在 url 中使用参数时如何从数据库中获取数据?
- java - 在 Java Struts Web 应用程序中使用 JSch 文件上传损坏
- objective-c - iOS 13 UIImagePickerController 图像/视频网格位于导航栏后面
- git - 在我的合并中避免其他团队成员提交
- vue.js - Vee-validate 3.0 使用 vue-18n 和 TS 配置 defaultMessage
- angular - Angular 总是在页面重新加载时重定向到默认路径