【问题标题】:how to pull data from many to many relationship table in django orm如何从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。
请指导我
【问题讨论】:
标签:
python
django
orm
many-to-many
【解决方案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)