获取按时间戳排序的一组用户的所有帖子

Get all posts by a group of users ordered by timestamp

我有三个模型:一个用户,一个Post,和一个关注,它记录一个用户何时关注了另一个用户。我想显示当前用户关注的用户的所有帖子。帖子列表应按时间戳排序。但是,该列表似乎按用户 ID 分组,然后按时间戳排序。如何获取仅按时间戳排序的关注用户的所有帖子?

followed_users = Follow.query.filter_by(follower_id=current_user.id).all()
followed_posts = []
for i in followed_users:
    followed_posts.extend(Post.query.filter(Post.author == i.followed_id).order_by(Post.timestamp.desc()).all())

您查询了所有用户,然后为每个用户查询了按时间戳排序的帖子。最终结果是按时间戳排序的帖子列表,按用户分组。相反,查询任何用户的所有帖子。将对所有后续 ID 的查询传递给对任何这些 ID 的任何帖子的查询。

followed_ids = db.session.query(Follow.followed_id).filter(Follow.follower_id == current_user.id).subquery()
followed_posts = Post.query.filter(Post.author.in_(followed_ids)).order_by(Post.timestamp.desc()).all()