You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否在Strawberry GraphQL Python中实现嵌套查询?

在Python的Strawberry GraphQL中实现嵌套查询

完全可以实现你想要的嵌套查询结构,无需再使用peopleList、peopleSingle这类扁平命名的查询字段。下面是具体实现方案:

1. 定义基础对象类型

先定义业务对应的GraphQL对象类型:

import strawberry
from typing import List, Optional

@strawberry.type
class Person:
    id: int
    name: str

@strawberry.type
class Company:
    id: int
    name: str

2. 定义嵌套的查询操作类型

为每个资源创建专门的查询操作类型,封装list、single这类操作:

@strawberry.type
class PeopleQueries:
    @strawberry.field
    def list(self) -> List[Person]:
        # 替换为实际的数据库查询逻辑
        return [Person(id=1, name="张三"), Person(id=2, name="李四")]
    
    @strawberry.field
    def single(self, id: int) -> Optional[Person]:
        # 替换为实际的单个资源查询逻辑
        return Person(id=id, name=f"用户{id}")

@strawberry.type
class CompanyQueries:
    @strawberry.field
    def list(self) -> List[Company]:
        # 替换为实际的数据库查询逻辑
        return [Company(id=101, name="A公司"), Company(id=102, name="B公司")]
    
    @strawberry.field
    def single(self, id: int) -> Optional[Company]:
        # 替换为实际的单个资源查询逻辑
        return Company(id=id, name=f"公司{id}")

3. 定义根查询类型

将嵌套查询类型作为根查询的字段:

@strawberry.type
class Query:
    people: PeopleQueries = strawberry.field(resolver=lambda: PeopleQueries())
    company: CompanyQueries = strawberry.field(resolver=lambda: CompanyQueries())

schema = strawberry.Schema(query=Query)

测试查询

现在可以执行你想要的嵌套查询:

query test {
  people {
    list {
      id
      name
    }
    single(id: 123) {
      id
      name
    }
  }
  company {
    list {
      id
      name
    }
    single(id: 456) {
      id
      name
    }
  }
}

执行后会返回如下格式的结果:

{
  "data": {
    "people": {
      "list": [
        {"id": 1, "name": "张三"},
        {"id": 2, "name": "李四"}
      ],
      "single": {"id": 123, "name": "用户123"}
    },
    "company": {
      "list": [
        {"id": 101, "name": "A公司"},
        {"id": 102, "name": "B公司"}
      ],
      "single": {"id": 456, "name": "公司456"}
    }
  }
}

内容的提问来源于stack exchange,提问作者Alexis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 04:55:22