微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我可以在Graphene Django的自定义类型下嵌套类似的模型关系吗?

如何解决我可以在Graphene Django的自定义类型下嵌套类似的模型关系吗?

假设我有一个带有许多相关关系的Django模型,是否可以通过非模型类型将它们嵌套以进行查询一个具体的例子:

假设我有一个模型Organization,其关系包括X_projectsX_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 举报,一经查实,本站将立刻删除。