从Django QuerySet获取所有相关的多对多对象

时间:2011-01-28 00:38:53

标签: python django many-to-many django-queryset

我有一个相互关联的Django模型的迷茫迷宫,其中有多对多的字段描述了这些关系。

从QuerySet获取相关模型的唯一成员列表的最简洁方法是什么?

如果我有一个Item模型,其中ManyToMany组指向Groups模型。

如果我有一个“项目”项目的查询集,我该怎么做:

groups = items[0].groups.all().values_list('name', flat=True)

但对于整套?我是否需要遍历它们并执行set()。intersect()?

1 个答案:

答案 0 :(得分:17)

一种解决方案是使用2个查询。

您可以使用反向关系查询GroupItem指向的所有items

groups = groups.objects.filter(item__in=items).distinct().values_list('name', flat=True)