我正在如下所示的for循环中使用order_by检索一些帖子
logged_user = Profile.objects.get(user=request.user.id)
followings = logged_user.follows.all()
all_posts = []
for foll in followings:
all_posts += Posts.objects.all().filter(user_profile=foll.id).order_by('trending_ratio')
它为每个用户对帖子进行排序,但是我想根据他们的trending ratio
对所有帖子进行排序。例如,上面的代码根据user1的所有tending_ratio
对user1的所有帖子进行排序,然后根据trending_ratio
对user2的所有帖子进行排序,依此类推。
但是,我只是想在所有用户的所有帖子都存储在all_posts中之后执行排序,即
all_posts.order_by('trending_ratio')
在我的for循环执行之后
注意:
1.我遵循“帖子”模型中的ManyToMany
字段。
2.以下是已登录用户关注的所有用户的列表
models.py
class Posts(models.Model):
user_profile = models.ForeignKey(Profile, on_delete=models.CASCADE)
trending_ratio = models.FloatField(default=1)
...
答案 0 :(得分:1)
您可以在一个查询中获取所有帖子:
all_posts = Posts.objects.filter(user_profile__in=followings).order_by('trending_ratio')
这将正确地排列它们,并且效率更高。