如何动态创建graphene对象?例如,我想在运行时添加基于配置fi的字段和解析器

2024-05-29 05:26:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我希望能够从给定的配置文件动态创建GraphQL服务器。例如,我的配置文件将包括哪些字段应该存在,并且一些字段将有一个标志,指示它们作为主键或辅助键,这些主键或次键将映射到它们,从而获得一个解析器。 如何实现动态创建graphene对象类型?在

我尝试使用graphene的示例代码,并在其中添加字段。但它不会接受他们。我试着深入研究元数据并更新一些选项,但也没有成功。在

class User(graphene.ObjectType):
    id = graphene.ID()
    name = graphene.String()


class Query(graphene.ObjectType):
    me = graphene.Field(User)

    def resolve_me(self, info):
        return info.context["user"]

schema = graphene.Schema(query=Query)
query = """
    query something{
      me {
        name
        temp
      }
    }
"""

if __name__ == "__main__":
    userobj = User
    print(dir(userobj._meta.fields))
    setattr(userobj,"temp", graphene.String())
    print((userobj._meta.fields))

    userobj._meta.fields.update({"temp": graphene.String()})
    print(userobj._meta.fields)

    print((userobj._meta.fields))
    result = schema.execute(query, context={"user": userobj(id="X", name="Console", temp="hey")})
    print(result.data)
    print(result.data["me"])

目前我没有通过这个尝试。去掉我更新的部分_元字段,我得到“temp不是创建userobj的有效参数”temp'是用户的无效关键字参数


Tags: namefieldsstring配置文件resultquerytempmeta

热门问题