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

drf-yasg 如何隐藏每个字段对应的'title'属性

drf-yasg隐藏字段title属性解决方案

drf-yasg title属性展示

你在drf-yasg接口文档中看到的每个字段对应的title属性,可通过以下两种方式隐藏:

方法1:全局隐藏所有字段的title属性

  • 自定义FieldInspector类,递归移除生成的schema中的title字段,代码如下:
from drf_yasg.inspectors import FieldInspector

class RemoveTitleFieldInspector(FieldInspector):
    def process_result(self, result, method_name, obj, **kwargs):
        # 移除当前层级的title属性
        result.pop('title', None)
        # 处理嵌套属性的title
        if 'properties' in result:
            for prop in result['properties'].values():
                prop.pop('title', None)
        return result
  • 在Django项目的settings.py中修改SWAGGER_SETTINGS配置,将自定义的Inspector放在默认检查器列表的最前面:
SWAGGER_SETTINGS = {
    # 你的其他原有配置保持不变
    'DEFAULT_FIELD_INSPECTORS': [
        '你存放类的模块路径.RemoveTitleFieldInspector', # 替换为实际的文件路径
        'drf_yasg.inspectors.CamelCaseJSONFilter',
        'drf_yasg.inspectors.ReferencingSerializerInspector',
        # 剩余默认的FieldInspector保持原有顺序即可
    ]
}

配置完成后重启服务,所有字段的title属性就会被自动移除。

方法2:仅隐藏指定字段的title属性

如果不需要全局生效,可直接在Serializer字段中手动设置title=None:

from rest_framework import serializers

class DemoSerializer(serializers.Serializer):
    # 单个字段关闭title属性
    username = serializers.CharField(max_length=32, title=None)
    phone = serializers.CharField(max_length=11, title=None)

补充说明:drf-yasg默认会从字段的verbose_name、help_text或者字段名自动生成title属性,属于OpenAPI规范的可选字段,移除后不会影响接口调用和文档其他功能的正常使用。

内容的提问来源于stack exchange,提问作者goldenotaste

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 17:36:04