返回介绍

组合自身动态和关注的用户动态

发布于 2025-01-02 21:53:51 字数 841 浏览 0 评论 0 收藏 0

我在 followed_posts() 函数中使用的查询是非常有用的,但有一个限制,人们期望看到他们自己的动态包含在他们的关注的用户动态的时间线中,而该查询却力有未逮。

有两种可能的方式来扩展此查询以包含用户自己的动态。 最直截了当的方法是将查询保持原样,但要确保所有用户都关注了他们自己。 如果你是你自己的粉丝,那么上面的查询就会找到你自己的动态以及你关注的所有人的动态。 这种方法的缺点是会影响粉丝的统计数据。 所有人的粉丝数量都将加一,所以它们必须在显示之前进行调整。 第二种方法是通过创建第二个查询返回用户自己的动态,然后使用“union”操作将两个查询合并为一个查询。

深思熟虑之后,我选择了第二个方案。 下面你可以看到 followed_posts() 函数已被扩展成通过联合查询来并入用户自己的动态:

    def followed_posts(self):
        followed = Post.query.join(
            followers, (followers.c.followed_id == Post.user_id)).filter(
                followers.c.follower_id == self.id)
        own = Post.query.filter_by(user_id=self.id)
        return followed.union(own).order_by(Post.timestamp.desc())

请注意, followedown 查询结果集是在排序之前进行的合并。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文