如何解决我可以在Graphene Django的自定义类型下嵌套类似的模型关系吗?
假设我有一个带有许多相关关系的Django模型,是否可以通过非模型类型将它们嵌套以进行查询?一个具体的例子:
假设我有一个模型Organization
,其关系包括X_projects
,X_accounts
等,它们也是Django模型。
很容易允许以下查询:
query fetchOrganization($id: Int!) {
organization(id: $id) {
id,... other fields ...
X_accounts {
...
}
X_projects {
...
}
}
}
query fetchOrganization($id: Int!) {
organization(id: $id) {
id,... other fields ...
X {
accounts {
...
}
projects {
...
}
}
}
}
考虑到X
在后端成为Django模型/关系实际上没有任何意义,有没有办法实现这一目标?
解决方法
是的,您可以通过修改“ X”的新解析器来实现,该解析器使用具有帐户和项目字段的自定义对象类型。
例如,您需要创建一个新的复合对象类型,该对象是帐户和项目的容器(假设您已经为帐户和项目模型定义了DjangoObjectType
类)>
class XType(graphene.ObjectType):
account = graphene.Field(AccountType)
project = graphene.Field(ProjectType)
然后修改组织类型定义以添加新字段,例如
class OrganizationType(DjangoObjectType):
x = graphene.Field(XType)
class Meta:
model = Organization
# You might want to exclude the x_project and x_account fields
def resolve_x(self,info,**kwargs):
# You'll have to work out how to parse arguments and fetch account and project
return XType(account=account,project=project)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。