I have a twisty maze of interrelated Django models, with many-to-many fields describing the relationships.
我有一个相互关联的Django模型的迷茫迷宫,其中包含描述关系的多对多字段。
What's the cleanest way to get a list of unique members of a related model from a QuerySet?
从QuerySet获取相关模型的唯一成员列表的最简洁方法是什么?
If I have a Item model with a groups ManyToMany pointing to the Groups model.
如果我有一个Item模型,其中ManyToMany组指向Groups模型。
If I have a queryset of Items, of 'items', how do I get this:
如果我有一个项目的查询集,'items',我该如何得到这个:
groups = items[0].groups.all().values_list('name', flat=True)
But for the whole set? Do I need to iterate through them all and do set().intersect() ?
但对于整套?我是否需要遍历它们并执行set()。intersect()?
1 个解决方案
#1
17
One solution is to use 2 queries.
一种解决方案是使用2个查询。
You can use the reverse relationships to query all Group
s that an Item
in your items
points to.
您可以使用反向关系查询项目中的项目指向的所有组。
groups = groups.objects.filter(item__in=items).distinct().values_list('name', flat=True)
#1
17
One solution is to use 2 queries.
一种解决方案是使用2个查询。
You can use the reverse relationships to query all Group
s that an Item
in your items
points to.
您可以使用反向关系查询项目中的项目指向的所有组。
groups = groups.objects.filter(item__in=items).distinct().values_list('name', flat=True)