能否通过drf-spectacular的PolymorphicProxySerializer生成多示例?
解决drf-spectacular中PolymorphicProxySerializer多示例显示问题
要让Swagger文档中显示两个序列化器的示例下拉选项,核心是给每个序列化器明确配置示例数据,drf-spectacular会自动收集这些示例并在oneOf模式中展示。
方法1:在序列化器Meta类中定义示例
给你的两个序列化器分别添加示例数据:
class CreateUpdateSingleProductSerializer(serializers.ModelSerializer): class Meta: model = SingleProduct fields = ['name', 'price'] # 配置单产品示例 example = { "name": "单个商品A", "price": 99.9 } class CreateUpdatePortfolioProductSerializer(serializers.ModelSerializer): class Meta: model = PortfolioProduct fields = ['portfolio_name', 'products'] # 配置组合产品示例 example = { "portfolio_name": "组合套餐X", "products": [1, 3, 5] }
方法2:用extend_schema_serializer装饰器配置示例
如果不想修改序列化器的Meta类,可以通过装饰器单独指定示例:
from drf_spectacular.utils import extend_schema_serializer @extend_schema_serializer( examples=[ { "name": "单个商品示例", "value": { "name": "单个商品A", "price": 99.9 } } ] ) class CreateUpdateSingleProductSerializer(serializers.ModelSerializer): # ... 原有序列化器代码 ... @extend_schema_serializer( examples=[ { "name": "组合商品示例", "value": { "portfolio_name": "组合套餐X", "products": [1, 3, 5] } } ] ) class CreateUpdatePortfolioProductSerializer(serializers.ModelSerializer): # ... 原有序列化器代码 ...
验证效果
配置完成后重启服务,刷新Swagger页面就能看到请求体的示例下拉框中,两个序列化器的示例选项都已显示。
内容的提问来源于stack exchange,提问作者Sharmiko
相关产品推荐
相关产品推荐

