所以我有一个与用户相关的模型Post。用户可以有连接(基本上只是朋友)。我想获得用户连接所做的所有帖子的列表。我已经有了一些有用的东西,但这已经进入了我不熟悉的领域,而且我非常感谢任何人可以在性能和最佳实践方面给我的建议。以下是我到目前为止的情况:
connections = self.request.user.connections.all()
id_list = []
for connection in connections:
id_list.append(connection.to_user.id)
posts = Post.objects.filter(user__in=id_list)
非常感谢任何帮助。我确信有更多的Django-y方法可以做到这一点。
答案 0 :(得分:1)
简单:
posts = Post.objects.filter(user__in=self.request.user.connections.all())
答案 1 :(得分:1)
您可以直接使用in
查找的查询集。这会将您的查找直接转换为数据库查询。因此,保存了for循环的开销。
connections = self.request.user.connections.all()
posts = Post.objects.filter(user__in=connections)
此外,这是 django-y 方式:)