2

GrapQL API を使用するために、graphene-django を使用しています。schema.pyにミューテーションを作成しました:

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)

このリクエストを実行すると、エラーが発生します。

mutation update {
  updateApplication(id: "QXBwbGljYXRpb25Ob2RlOjE=", name: "foo") {
    application {
      name
    }
  }
}

エラー:

mutate() takes exactly 4 arguments (5 given)

mutate() に 5 ではなく 4 つの引数を入れました... バグですか?

4

1 に答える 1

3

グラフェン 1.0 の時点で、コンテキストはデフォルトでミューテーションおよび解決関数に渡されるようになりましたが、以前のバージョンでは @with_context が必要でした: https://github.com/graphql-python/graphene/blob/master/UPGRADE-v1.0。 md

したがって、mutate 関数は次のようになります。

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)
于 2016-11-05T22:40:32.650 に答える