我可以在Graphene Django中的自定义类型下嵌套类似的模型关系吗?
假设我有一个Django模型,其中有许多相互关联的关系,是否可以通过非模型类型嵌套它们以进行查询?一个具体的例子: 假设我有一个模型我可以在Graphene Django中的自定义类型下嵌套类似的模型关系吗?,django,graphql,graphene-python,graphene-django,Django,Graphql,Graphene Python,Graphene Django,假设我有一个Django模型,其中有许多相互关联的关系,是否可以通过非模型类型嵌套它们以进行查询?一个具体的例子: 假设我有一个模型组织,其关系包括X_项目,X_账户,等等,这些都是Django模型 允许以下查询非常容易: query fetchOrganization($id: Int!) { organization(id: $id) { id, ... other fields ... X_accounts { ... } X_pro
组织
,其关系包括X_项目
,X_账户
,等等,这些都是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 {
...
}
}
}
}
但我更愿意支持以下查询:
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”的新解析程序来实现这一点,该解析程序使用具有帐户和项目字段的自定义对象类型
例如,您需要创建一个新的复合对象类型,它是帐户和项目的容器(假设您已经为帐户和项目模型定义了一个djangObjectType
类)
然后修改组织类型定义以添加新字段,如
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)
?谢谢,非常有帮助!