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

Django Graphene Mutation如何定义接收任意对象的无校验输入字段

Graphene 支持任意结构payload字段配置方法

GraphQL本身是强类型系统,没有原生的任意类型支持,要实现无校验接收动态结构的payload,直接用Graphene内置的GenericScalar标量就行。这个类型支持接收所有合法JSON值:嵌套对象、数组、字符串、数字、布尔、null都能接,完全不会校验内部结构,刚好符合你的需求。

具体实现代码

先导入对应标量类型,直接给payload字段指定类型即可:

import graphene
from graphene.types.generic import GenericScalar
# 按项目原有逻辑导入MutationMixin、relay等依赖

class SendEvent(MutationMixin, relay.ClientIDMutation):
    class Input:
        event = graphene.String(required=True)
        # payload配置为GenericScalar,支持传入任意结构对象
        payload = GenericScalar(required=True) # required参数可根据业务需求自行决定是否添加

    @classmethod
    def mutate_and_get_payload(cls, root, info, event, payload, **kwargs):
        # 此处拿到的payload就是前端传入的原生Python结构(字典/列表/基础值等)
        # 直接写存储逻辑即可,比如存入模型的JSONField
        # 自定义业务逻辑
        return SendEvent(...)

补充说明

  • GenericScalar不会对payload的内部字段、嵌套结构做任何校验,不管传入多复杂的嵌套对象、混合类型数组都可以正常解析接收。
  • Graphene 2.0及以上的主流版本都内置了这个标量类型,不需要额外安装第三方依赖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 04:51:37