首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >graphene.Mutation的窃听器?

graphene.Mutation的窃听器?
EN

Stack Overflow用户
提问于 2016-11-04 16:12:02
回答 1查看 891关注 0票数 2

我使用石墨烯-django来拥有一个GrapQL API。我在我的schema.py中创建了一个突变

代码语言:javascript
复制
class UpdateApplication(graphene.Mutation):
    class Input:
        id = graphene.String()
        name = graphene.String()

    application = graphene.Field(ApplicationNode)

    @classmethod
    def mutate(cls, instance, args, info):
        name = args.get('name')
        rid = from_global_id(args.get('id'))[1]
        update_application = Application.objects.filter(id=rid).update(name=name)

        return UpdateApplication(application=update_application)



class Mutation(ObjectType):
    update_application = UpdateApplication.Field()

schema = graphene.Schema(mutation=Mutation)

当我运行这个搜索时,我有一个错误。

代码语言:javascript
复制
mutation update {
  updateApplication(id: "QXBwbGljYXRpb25Ob2RlOjE=", name: "foo") {
    application {
      name
    }
  }
}

错误:

代码语言:javascript
复制
mutate() takes exactly 4 arguments (5 given)

我提出了4个论点的变异()而不是5.是虫子吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-05 22:40:32

从石墨烯1.0开始,上下文在默认情况下被传递给突变和解析函数,而在以前的版本中它需要@with_context:https://github.com/graphql-python/graphene/blob/master/UPGRADE-v1.0.md

因此,您的变异函数应该如下所示:

代码语言:javascript
复制
def mutate(self, args, context, info):
    name = args.get('name')
    rid = from_global_id(args.get('id'))[1]
    update_application = Application.objects.filter(id=rid).update(name=name)

    return UpdateApplication(application=update_application)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40427247

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档