如何从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 的多对多关系重复?