Объединения(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