Как переместить методы разрешения graphene в разные файлы?

#python #graphql #graphene-python

#python #graphql #graphene-python

Вопрос:

У меня есть следующий код. Запрос — это моя корневая схема. Если у меня есть только один profile , можно использовать метод resolve внутри запроса. Но что, если схема слишком большая? В любом случае нужно перемещаться resolve_profile внутри типа объекта Profile?

 import graphene

class Query(graphene.ObjectType):
  profile = graphene.ObjectType(Profile)

  def resolve_profile(self):
    return ...

class Profile(graphene.ObjectType):
  firstName = graphene.String(graphene.String)
  lastName = graphene.String(graphene.String)
  

Комментарии:

1. Я не знаком с graphene, но я думаю, что Query также обрабатывается как любой другой тип объекта при определении схемы, поэтому каждое поле должно иметь свой собственный распознаватель в своем типе

Ответ №1:

Нет, вы не можете resolve_profile перейти Profile , но есть другой способ справиться с большой схемой. Вы можете разбить свой запрос на несколько файлов и наследовать каждый из этих файлов Query . В этом примере я ворвался Query в AQuery , BQuery и CQuery :

 class Query(AQuery, BQuery, CQuery, graphene.ObjectType):
   pass
  

И тогда вы могли бы определить AQuery в другом файле, подобном этому:

 class AQuery(graphene.ObjectType):
    profile = graphene.ObjectType(Profile)

    def resolve_profile(self):
         return ...
  

и поместите другой код в BQuery и CQuery .

Вы также можете использовать ту же технику для разделения ваших мутаций.