使用GraphQL和Graphen进行多级过滤

2024-10-16 17:24:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用的是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的外键,它有一个{}的外键

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

^{pr2}$

但是,正如我所说,它返回每个作业的所有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)

关于如何在多个级别设置过滤有什么建议吗?提前谢谢!!在


Tags: selfnodereturnobjectsdef作业jobsargs