Python 使用GraphQL和Graphene进行多级过滤

Python 使用GraphQL和Graphene进行多级过滤,python,django,graphql,Python,Django,Graphql,我使用的是Django和Graphene,有多个级别需要过滤。但我无法通过“名为“undefined\”的未知操作”或获取层次结构每个级别的所有对象(即:每个作业列出的所有作业的所有作业详细信息) 我正在尝试执行以下查询: query { allPushes(revision: "1ef73669e8fccac35b650ff81df1b575a39a0fd5") { edges { node { revision author

我使用的是Django和Graphene,有多个级别需要过滤。但我无法通过“名为“undefined\”的未知操作”或获取层次结构每个级别的所有对象(即:每个作业列出的所有作业的所有作业详细信息)

我正在尝试执行以下查询:

query {
  allPushes(revision: "1ef73669e8fccac35b650ff81df1b575a39a0fd5") {
    edges {
      node {
        revision
        author
        jobs (result: "testfailed") {
          edges {
            node {
              result
              jobDetails (url_Iendswith: "errorsummary.log") {
                edges {
                  node {
                    url
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}
在Django中,
jobDetails
有一个外键指向
jobs
,外键指向
push

我的第一次尝试是设置我的节点:

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
at,而不仅仅是属于该作业的jobDetails

但是如果我删除了那些
DjangoFilterConnectionField
字段,那么我就不能在每个级别进行过滤;只是第一次

我的查询如下所示:

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)

有没有关于如何在这样的多个级别设置过滤的建议?提前谢谢

这是石墨烯django中的一个bug。它在版本1.3中被修复。

问候