首页 > 解决方案 > 从嵌套类访问父 graphene.ObjectType 的数据

问题描述

this question中所述,可以在python中的石墨烯中进行嵌套查询。有没有办法访问父查询的数据?

参考同一个问题

query {
    person (id: "Mary") {
        id
        name
    }
}

嵌套查询:

query {
    people {
        group
        allPersons {
           name
        }
    }
}

我将如何grouppeople解析器中访问allPersons.

标签: pythonnestedgraphqlgraphene-pythonresolver

解决方案


石墨烯文档并没有说明这一点。

正如问题中提到的页面,根查询如下:

class YourQuery(object):
    # person = ...
    people = graphene.Field(AllPeopleType)

    def resolve_people(self, info):
        return AllPeopleType()

Person访问触发的父级的变量resolve_all_persons,即AllPersons

class AllPeopleType(graphene.ObjectType):
    group = graphene.Int()
    all_persons = graphene.List(Person)

    def resolve_all_persons(self, info, **kwargs):
        # This allows us to access group of AllPersons
        personGroup = self['group']
        return Person.objects.all()

但是,如果解析器all_persons定义为

all_persons = graphene.List(Person, resolver = yourResolverFunctionHere)

这是因为解析器Person(以及其中的任何内容AllPersons)必须是AllPersons解析其自己的变量的 Parent 类的成员。


推荐阅读