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

发布于 2024-10-14 09:44:15 字数 320 浏览 4 评论 0原文

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

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

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

如果我有一个“项目”的项目查询集,我如何得到这个:

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

但是对于整个集合?我是否需要遍历它们并执行 set().intersect() ?

I have a twisty maze of interrelated Django models, with many-to-many fields describing the relationships.

What's the cleanest way to get a list of unique members of a related model from a QuerySet?

If I have a Item model with a groups ManyToMany pointing to the Groups model.

If I have a queryset of Items, of 'items', how do I get this:

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() ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

恋竹姑娘 2024-10-21 09:44:15

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

您可以使用反向关系来查询 items 中的 Item 指向的所有 Group

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

One solution is to use 2 queries.

You can use the reverse relationships to query all Groups that an Item in your items points to.

groups = groups.objects.filter(item__in=items).distinct().values_list('name', flat=True)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文