想象一下:
我在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”功能,我只能从一个人那里获得帖子。
我希望有人可以帮助我...
答案 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)
希望这会有所帮助,并且对我有用...