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

如何在Graphene中正确解析带前导下划线的字段?

解决Graphene中解析带前导下划线字段的问题

这个问题我之前踩过坑!Graphene默认会按照下划线转驼峰的规则处理字段名,所以你定义的_id字段会被自动转换为GraphQL schema中的id(而不是你预期的_id),这就是为什么你的resolve__id方法没生效的原因——因为Graphene根本没把这个字段识别成_id。

解决方案:显式指定字段的name参数

要保留前导下划线的字段名,你需要在定义字段时手动指定name参数,强制让GraphQL schema中的字段名就是_id。然后对应的解析方法命名保持resolve__id即可。

修改后的代码如下:

class Article(graphene.ObjectType):
    # 显式指定GraphQL字段名为"_id",避免自动转换
    _id = graphene.Int(name="_id")
    article_id = graphene.Int()

    def resolve__id(self, info):
        return self.article_id

原理说明

  • 通过name="_id",告诉Graphene不要对这个字段名做自动转换,在GraphQL schema中直接使用_id作为字段名。
  • 解析方法命名resolve__id是符合Graphene规则的:解析方法的格式为resolve_<字段名>,因为你的字段名是_id,所以拼接后就是resolve__id(两个下划线)。

这样当你在GraphQL查询中请求_id字段时,就会正确调用resolve__id方法,返回article_id的值了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:43:09