我想创建两个现有类型(FirstType 和 SecondType)的 UnionType(graphene.Union) 并能够解析此联合类型的查询。
架构
class FirstType(DjangoObjectType):
class Meta:
model = FirstModel
class SecondType(DjangoObjectType):
class Meta:
model = SecondModel
class UnionType(graphene.Union):
class Meta:
types = (FirstType, SecondType)
因此,使用此模式,我想在某个列表 [pks] 中使用 pk 查询 FirstType 和 SecondType 中的所有对象
query {
all_items(pks: [1,2,5,7]){
... on FirstType{
pk,
color,
}
... on SecondType{
pk,
size,
}
}
}
FirstType 的 PK 通常不在 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
},
...
]}
}
那么解析器应该是什么样子呢?