如何从django orm中的多对多关系表中提取数据

Posted

技术标签:

【中文标题】如何从django orm中的多对多关系表中提取数据【英文标题】:how to pull data from many to many relationship table in django orm 【发布时间】:2012-05-02 03:23:32 【问题描述】:

我正在尝试通过将 auth_user (主表)与 auth_user_user_permissions(manyTomany ) 加入来列出所有权限 ID。我试过关注

PER = sorted((item.permission_id) for item in list(User.objects.filter(user_permissions__user=2)))

这是说'用户'对象没有属性'permission_id。

请指导我

【问题讨论】:

【参考方案1】:

User.objects.filter(...) 为用户获取查询集。因此 item 是一个 User() 实例。要访问该项目的权限,请直接item.user_permissions.all()。因此在你的情况下

User(pk=2).user_permissions.values_list('pk', flat=True).order_by('pk')
# or
[x.pk for x in Permission.objects.filter(user=2).order_by('pk')]

更多信息请参考the doc。

【讨论】:

【参考方案2】:

如果您需要权限 ID,则需要直接查询权限表。

permission_ids = Permission.objects.filter(user=2).values_list('id', flat=True)

【讨论】:

以上是关于如何从django orm中的多对多关系表中提取数据的主要内容,如果未能解决你的问题,请参考以下文章

如何从雄辩关系中的第三个表中获取数据雄辩的多对多关系

如何避免与 Doctrine2 和 Zend Framework 2 的多对多关系重复?

从 Django 查询中的多对多关系中检索项目

推进:没有交叉表的多对多关系

如何从 SqlAlchemy 中的多对多集合中删除所有项目?

Hibernate-ORM:12.Hibernate中的多对多关联关系