You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否通过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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 07:09:57