Django Graphene объединение 3 таблиц
Я программирую сайт с помощью Django и использую Graphene для реализации GraphQL. У меня есть три таблицы, которые содержат различные типы продуктов. Я хотел бы иметь запрос, который при поиске пользователем названия продукта возвращает все продукты из всех трех таблиц
Я читал, что Graphene union делает это, но я не могу заставить функциональность работать.
class Cards(DjangoObjectType):
class Meta:
model = magic_sets_cards
fields = ['name']
class Tokens(DjangoObjectType):
class Meta:
model = magic_sets_tokens
fields = ['name']
class Sealed(DjangoObjectType):
class Meta:
model = magic_sets_sealed_products
fields = ['name']
class MagicSearchTestUnion(graphene.Union):
class Meta:
types = (Cards, Tokens, Sealed)
@classmethod
def resolve_type(cls, instance, info):
if isinstance(instance, magic_sets_cards):
return Cards
if isinstance(instance, magic_sets_tokens):
return Tokens
if isinstance(instance, magic_sets_sealed_products):
return Sealed
return MagicSearchTestUnion.resolve_type(instance, info)
class MagicSearchTestQuery(graphene.ObjectType):
magic_search_cards = graphene.List(MagicSearchTestUnion)
@staticmethod
def resolve_magic_search_cards(self, info, search=''):
cards = magic_sets_cards.objects.filter(name__icontains=search).all()
tokens = magic_sets_tokens.objects.filter(name__icontains=search).all()
sealed = magic_sets_sealed_products.objects.filter(name__icontains=search).all()
return list(chain(cards, tokens, sealed))
magicSearchTestSchema = graphene.Schema(query=MagicSearchTestQuery)
Это работает нормально, без ошибок, и я могу получить доступ к графическому интерфейсу GraphQL GUI, но в запросе нет ожидаемых полей.
{
magicSearchCards {
__typename
}
}
Выше перечислены все поля, которые, похоже, доступны мне.