我试图在查询nodes表时从posts和nodes表返回数据
这些是我的模型:
class NodesModel(db.Model):
__tablename__ = 'nodes'
id = db.Column(db.BigInteger, primary_key=True)
project_uuid = db.Column(UUID(as_uuid=True), db.ForeignKey('projects.uuid'))
topic = db.Column(db.String(15), nullable=False)
posts_nodes = relationship("PostsNodesModel", backref="nodes")
class PostsModel(db.Model):
__tablename__ = 'posts'
id = db.Column(db.BigInteger, server_default=db.FetchedValue(), primary_key=True)
project_uuid = db.Column(UUID(as_uuid=True), db.ForeignKey('projects.uuid'), nullable=False)
post = db.Column(db.String, nullable=False)
posts_nodes = relationship("PostsNodesModel", backref="posts")
class PostsNodesModel(db.Model):
__tablename__ = 'posts_nodes'
post_id = db.Column(db.BigInteger, db.ForeignKey('posts.id'), primary_key=True)
node_id = db.Column(db.BigInteger, db.ForeignKey('nodes.id'), primary_key=True)
我正在查询nodes.topic以获取我想要的主题,并通过posts\u节点查找包含该主题的所有帖子
selected = (db.session.query(NodesModel.id, NodesModel.topic, PostsModel.post)
.filter(PostsModel.id == PostsNodesModel.post_id)
.filter(PostsNodesModel.node_id == NodesModel.id)
.filter(NodesModel.project_uuid == project_uuid)
.filter(NodesModel.topic == 'tomorrow')
.all())
这可能不是正确的方法(而且看起来很笨拙)。难道没有人知道如何使这个查询更简单吗?特别是这两个过滤器:
.filter(PostsModel.id == PostsNodesModel.post_id)
.filter(PostsNodesModel.node_id == NodesModel.id)
我在某个地方读到(我现在找不到)有了中的关系,我不必这样做,因为Sqlalchemy会看到关联并在后面执行,查询可以是
selected = (db.session.query(NodesModel.id, NodesModel.topic, NodesModel.track, PostsModel.post)
.filter(NodesModel.project_uuid == project_uuid)
.filter(NodesModel.topic == 'tomorrow')
.all())
但它不起作用
谢谢。 德斯蒙德
目前没有回答
相关问题 更多 >
编程相关推荐