2017-04-04 13 views
1

私はDjangoとGrapheneを使用していますが、フィルタリングしたいレベルは複数あります。しかし、私は "未定義の\"という名前の未知の操作のいずれかを過ぎることはできません。 "階層の各レベルですべてのオブジェクトを取得する(すなわち、各ジョブについてリストされたすべてのジョブのすべてのジョブ詳細)。私はこのクエリやろうとしているGraphQLとグラフェンを使用した複数レベルのフィルタ

:ジャンゴで

query { 
    allPushes(revision: "1ef73669e8fccac35b650ff81df1b575a39a0fd5") { 
    edges { 
     node { 
     revision 
     author 
     jobs (result: "testfailed") { 
      edges { 
      node { 
       result 
       jobDetails (url_Iendswith: "errorsummary.log") { 
       edges { 
        node { 
        url 
        } 
       } 
       } 
      } 
      } 
     } 
     } 
    } 
    } 
} 

を、jobDetailsは私のノード設定にしたpushes

私の最初の試みへの外部キーを持っているjobsへの外部キーを持っています:

class JobDetailNode(DjangoObjectType): 
    class Meta: 
     model = JobDetail 
     filter_fields = { 
      'url': ('exact', 'icontains', 'iendswith') 
     } 
     interfaces = (relay.Node,) 


class JobNode(DjangoObjectType): 
    class Meta: 
     model = Job 
     filter_fields = ('result', 'tier') 
     interfaces = (relay.Node,) 

    job_details = DjangoFilterConnectionField(JobDetailNode) 


class PushNode(DjangoObjectType): 
    class Meta: 
     model = Push 
     filter_fields = ('revision',) 
     interfaces = (relay.Node,) 

    jobs = DjangoFilterConnectionField(JobNode) 

しかし、私が言ったように、これは、各ジョブのすべてでjobDetails、BだけでなくjobDetailsを返します。その仕事に長くなる。

これらのフィールドを削除すると、各レベルでフィルタリングできません。ちょうど最初の。

私のクエリは次のようになります。セットアップは、このような複数のレベルでフィルタリングする方法について

class Query(ObjectType): 
    all_pushes = DjangoFilterConnectionField(PushNode) 
    all_jobs = DjangoFilterConnectionField(JobNode) 
    all_job_details = DjangoFilterConnectionField(JobDetailNode) 

    def resolve_all_pushes(self, args): 
     return Push.objects.filter(**args) 

    def resolve_all_jobs(self, args): 
     return Job.objects.filter(**args) 

    def resolve_all_job_details(self, args): 
     return JobDetail.objects.filter(**args) 

任意の提案ですか?前もって感謝します!!

答えて

2

これはgraphene-djangoのバグです。バージョン1.3で修正されました。 Changelog

よろしくお願いいたします。

関連する問題