gpt4 book ai didi

graphql - 如何解析graphene.Union Type?

转载 作者:行者123 更新时间:2023-12-04 11:24:14 24 4
gpt4 key购买 nike

我想创建两个现有类型(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
},
...
]}
}

那么解析器应该是什么样子的呢?

最佳答案

好的,所以我太专注于合并查询集,我没有注意到我可以简单地返回一个列表。

所以这里是解决方案,它给了我我正在寻找的回应:

def resolve_items(root, info, ids):
items = []
queryset1 = FirstModel.objects.filter(id__in=pks)
items.extend(queryset1)
queryset2 = SecondModel.objects.filter(id__in=pks)
items.extend(queryset2)
return items

关于graphql - 如何解析graphene.Union Type?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56004929/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com