列出自己所在的每个组的所有用户,不包括self

时间:2013-02-17 14:37:48

标签: django

我正在尝试打印出用户所属的所有群组的列表。嵌套在每个组中的将是该组中所有其他用户的列表。

user = self.request.user
groups = Group.objects.filter(user=user)
people = User.objects.filter(groups__in=groups).exclude(pk=user.pk)

但这只是给了我一个用户列表,我希望它们尽可能有效地按组分组。

我也可以这样做:

groups = Group.objects.filter(user=user)
for group in groups:
    people = group.user_set.exclude(pk=user.pk)

但我觉得这样做的查询太多了(每组一个?)


所以,这似乎可能是这样做的方式:

groups = self.user.groups.prefetch_related('user_set')
for group in groups:
    print(group)
    print(group.user_set.exclude(pk=user.pk)

我只是想确保exclude语句没有进行另一个查询,如果是,我可以将它添加到预取中。

嗯,在查看db.connection.queries之后,我确实看到了对排除的额外查询。有可能以某种方式预取吗?

0 个答案:

没有答案