在Django中创建一个复杂的查询我的所有帖子

时间:2014-12-17 06:08:23

标签: python django orm

想象一下:

我在Django应用程序中有“帖子”,“用户”,“UserFollowUser”模型......

我希望从我的POST模型中获取所有POSTS,但仅限于我关注的人。

每个POST都有作为作者的用户的用户ID。

我的意思是,有一个寄存器说:

“Cris”跟随“Larry”

我希望得到Larry和我关注的其他人的帖子。

我试过了:

follows = UserFollowUser.objects.get(follower = request.user) #I AM request.user
posts = Post.objects.filter(user = follows.followed).order_by('-id')

但由于对象对象中的“GET”功能,我只能从一个人那里获得帖子。

我希望有人可以帮助我...

2 个答案:

答案 0 :(得分:4)

您需要做的是为您的粉丝获取一系列用户ID。然后使用__in syntax进行查询,询问其用户ID位于关注者的用户ID集合中的所有帖子。代码看起来像这样:

follower_user_ids = UserFollowUser.objects.filter(follower__user_id = request.user.id)\
                                          .values_list('follower__user_id', flat=True)\
                                          .distinct()
posts = Post.objects.filter(user_id__in=follower_user_ids)

*这假设UserFollowUser.follower是User表的外键。

答案 1 :(得分:0)

现在登录的用户是

user = request.user

现在我有一个扩展UserModel的配置文件模型 个人资料模型具有“多对多”字段关注,该字段已使用户登录并关注用户 使所有登录用户的用户都可以运行

follows_users = user.profile.follows.all()

在follows_users运行中获取所有用户的发布对象

posts = Post.objects.filter(author_id__in=follows_users)

希望这会有所帮助,并且对我有用...