【发布时间】:2023-02-25 19:54:07
【问题描述】:
假设您有这些(Flask)SQLAlchemy 模型,它们模拟一个帖子和几个不同版本的帖子,代表不同的时间点。这是帖子和版本之间的一对多关系。帖子的每个版本都有不同的点赞数,但您希望将最新版本视为默认版本,这样如果您尝试进行引用 Post.likes 的查询,您实际上是在加入版本表并查询喜欢来自版本表。
class Post(db.Model):
__tablename__ = 'posts'
post_id = Column(BigInteger, primary_key = True)
versions = relationship('PostVersion', back_populates = 'post')
class PostVersion(db.Model):
__tablename__ = 'post_versions'
post_version_id = Column(BigInteger, primary_key = True)
post_id = Column(ForeignKey(Post.post_id), primary_key = True)
likes = Column(BigInteger)
post = relationship('Post', back_populates = 'versions')
我们可以向这些模型中的任何一个添加什么样的混合属性表达式或其他方法来使以下查询(或接近它的东西)成为可能,而不仅仅是 likes 字段,而是任何字段?
posts = Post.query.filter(Post.likes >= 100).all()
或者
posts = Post.query.filter(Post.most_recent_version.likes > 100).all()
【问题讨论】:
标签: python sqlalchemy model flask-sqlalchemy