Объединения(Unions)

Объединения Unions очень похожи на интерфейсы Interfaces, но они не имеют каких-то общих полей между типами.

Основы:

  • Каждое объединение Union это класс Python, который наследуется от graphene.Union.
  • Объединения Unions не имеют каких-то полей, только ссылки на возможные объектные типы ObjectTypes.

Пример

В данном примере описываются модели Human, Droid и Starship каждый со своими полями. Объединение SearchResult содержит в себе ссылки на вышеуказынные модели.

import graphene

class Human(graphene.ObjectType):
    name = graphene.String()
    born_in = graphene.String()

class Droid(graphene.ObjectType):
    name = graphene.String()
    primary_function = graphene.String()

class Starship(graphene.ObjectType):
    name = graphene.String()
    length = graphene.Int()

class SearchResult(graphene.Union):
    class Meta:
        types = (Human, Droid, Starship)

Вышеуказанные типы имет следующее представление в Вашей схеме:

type Droid {
  name: String
  primaryFunction: String
}

type Human {
  name: String
  bornIn: String
}

type Ship {
  name: String
  length: Int
}

union SearchResult = Human | Droid | Starship

results matching ""

    No results matching ""