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