2016-11-04 30 views
2

私はgraphene-djangoをGrapQL APIに使用しています。 私は私のschema.pyに突然変異を作成しました:私はこのresquestを実行すると、私はエラーを持っているグラフェンのバグ。突然変異?

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) 

私がいない5)(のmutateに4つの引数を入れて...それはバグですか?

答えて

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) 
+0

ご回答有難うございます。私はそれを修正しましたが、それは私の間違いを解決しません。 –

+0

申し訳ありません...私はあなたが書いたことを愚かにコピーしました...ドキュメントが言うように今はデコレータがありません...助けてくれてありがとう。 –

+0

@Yacine Filaliそれは以下でなければなりません:def mutate(cls、instance、args、context、info): – nim4n