问题描述
sqlalchemy 模型
class AssetAssignment(base_model.BaseModel,Base):
__tablename__ = "asset_assignment"
id = Column(Integer,ForeignKey('page_asset.asset_assignment_id'),primary_key=True,index=True,name="id")
asset_type_id = Column(Integer,nullable=False,name="asset_type_id")
asset_id = Column(Integer,ForeignKey('asset.id'),name="asset_id")
status = Column(Integer,name="status",default=1)
public=Column(Integer,nullable=True,name="public",default=1)
class Page(Base):
__tablename__ = "page"
id = Column(Integer,name="id")
page_id = Column(Integer,name="page_id")
asset_assignment_id = Column(Integer,name="asset_assignment_id")
asset_assignment=relationship("AssetAssignment",lazy='joined',uselist=True)
尝试通过 graphql 访问上述内容:
class Asset(sqlAlchemyObjectType):
class Meta:
model = Page
interfaces = (relay.Node,)
class Query(graphene.ObjectType):
all_assets= graphene.List(Asset)
def resolve_all_assets(self,info):
query = Asset.get_query(info) # sqlAlchemy query
return query.all()
结果没有“asset_assignment”字段,它是一个关系列。
Graphql 查询
{
allAssets{
asset_assignment
}
}
结果
{
"data": null,"errors": [
{
"message": "Cannot query field \"asset_assignment\" on type \"Asset\". Did you mean \"assetAssignmentId\"?","locations": [
{
"line": 39,"column": 4
}
]
}
]
}
解决方法
SQLAlchemyConnectionField 帮助获取关系列
all_assets= SQLAlchemyConnectionField(Page.connection)