基于用户关系的对象列表

时间:2014-02-11 19:15:51

标签: python django

所以我有一个与用户相关的模型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方法可以做到这一点。

2 个答案:

答案 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 方式:)