私は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)
任意の提案ですか?前もって感謝します!!