我有三个模型:用户,帖子和关注,用于记录用户跟随其他用户的情况。我想显示当前用户关注的用户的所有帖子。帖子列表应按时间戳排序。但是,列表似乎按用户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())
答案 0 :(得分:1)
您查询了所有用户,然后查询了按时间戳排序的每个用户查询的帖子。最终结果是按时间戳排序的帖子列表,按用户分组。而是查询任何用户的所有帖子。将所有后续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()