Python 如何使用石墨烯sqlalchemy SQLAlchemyConnectionField与多对多关联?
我正在使用Python 如何使用石墨烯sqlalchemy SQLAlchemyConnectionField与多对多关联?,python,graphql,graphene-sqlalchemy,Python,Graphql,Graphene Sqlalchemy,我正在使用graphene sqlalchemy为我的数据库创建一个api,并希望在整个api中有一致的感觉。从这个意义上说,顶级查询使用edges{node{}语法来查询api。但是,我在尝试为多对多关系实现此功能时遇到了一个问题 使用下面定义的graphene类型,我可以让api从数据库返回所有适当的值,但是,底层关系(event_实例和component_实例)不使用edges{node{}的graphql连接字段语法,而只返回一个列表。查询如下所示 #[components.py] 类C
graphene sqlalchemy
为我的数据库创建一个api,并希望在整个api中有一致的感觉。从这个意义上说,顶级查询使用edges{node{}
语法来查询api。但是,我在尝试为多对多关系实现此功能时遇到了一个问题
使用下面定义的graphene类型,我可以让api从数据库返回所有适当的值,但是,底层关系(event_实例
和component_实例
)不使用edges{node{}
的graphql连接字段语法,而只返回一个列表。查询如下所示
#[components.py]
类ComponentInstanceType(SQLAlchemyObject类型):
类元:
模型=组件实例模型
接口=(relay.Node,)
event\u instances=List(“api\u core.graphql.types.events.EventInstanceType”)
#[events.py]
类EventInstanceType(SQLAlchemyObject类型):
类元:
模型=事件实例模型
接口=(relay.Node,)
component_instances=List(“api_core.graphql.types.components.ComponentInstanceType”)
#[查询.py]
类EventQuery(对象类型):
node=relay.node.Field()
所有事件实例=SQLAlchemyConnectionField(
EventInstanceType.connection
)
我能够完成我想要的结构,如下所示
query {
allEventInstances {
edges {
node {
id
componentInstances {
edges {
node {
id
}
}
}
}
}
}
}
通过改变
component\u instances=List(“api\u core.graphql.types.components.ComponentInstanceType”)
到
component\u instances=SQLAlchemyConnectionField(ComponentInstanceType.connection)
在定义EventInstanceType
类之前导入ComponentInstanceType
。但是,我无法对ComponentInstanceType
类执行相同的操作,因为尚未定义EventInstanceType
是否仍然可以执行此类类的“惰性定义”并访问.connection
属性?我知道向前引用,比如“api\u core.graphql.types.components.components.ComponentInstanceType”
是有效的,因为我正在尝试访问。连接
它正在崩溃
query {
allEventInstances {
edges {
node {
id
componentInstances {
edges {
node {
id
}
}
}
}
}
}
}