如何解决python - fastapi - graphene - sql alchemy - 无法查询关系列
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)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。