Я хочу создать UnionType (graphene.Union) из двух существующих типов (FirstType и SecondType) и иметь возможность разрешить запрос этого типа объединения.
Схема
class FirstType(DjangoObjectType):
class Meta:
model = FirstModel
class SecondType(DjangoObjectType):
class Meta:
model = SecondModel
class UnionType(graphene.Union):
class Meta:
types = (FirstType, SecondType)
Так что с этой схемой я хочу запросить все объекты из FirstType и SecondType с pk в некотором списке [pks]
query {
all_items(pks: [1,2,5,7]){
... on FirstType{
pk,
color,
}
... on SecondType{
pk,
size,
}
}
}
PK из FirstType обычно не входят во SecondType.
Я попробовал, как показано ниже
def resolve_items(root, info, ids):
queryset1 = FirstModel.objects.filter(id__in=pks)
queryset2 = SecondModel.objects.filter(id__in=pks)
return queryset1 | queryset2
но выдает ошибку: «Невозможно объединить запросы в двух разных базовых моделях».
Я ожидаю следующий ответ от запроса:
{ 'data':
{'all_items':[
{'pk': 1,
'color': blue
},
{'pk': 2,
'size': 50.0
},
...
]}
}
Так как должен выглядеть резольвер?