Python 具有相关键的Django连接查询

Python 具有相关键的Django连接查询,python,django,django-models,Python,Django,Django Models,我有这个模型: class Role(models.Model): role_name = models.CharField() class RolePriviledge(models.Model): role = models.ForeignKey(Role, related_name='role_priviledge' ) module_name = models.CharField() priviledge_level = models.C

我有这个模型:

class Role(models.Model):
    role_name = models.CharField()

class RolePriviledge(models.Model):
    role = models.ForeignKey(Role, related_name='role_priviledge' )        
    module_name = models.CharField()
    priviledge_level = models.CharField()

class UserRole(models.Model):
    user = models.ForeignKey(User)
    role = models.ForeignKey(Role)
我试图做的是找到指定用户的所有特权。在sql中,这将是:

SELECT t3.* 
FROM UserRole t1
JOIN Role t2 on t1.role_id = t2.id
JOIN RolePriviledge t3 on t2.id = t3.role_id
WHERE t1.user_id = USER_ID
(我也可以跳过与
Role
的连接,只需在
UserRole
roleprivilege
之间进行内部连接)

我如何加入Django ORM
UserRole.objects.filter(user\u id=user\u id)。选择与之相关的('role')
将加入
UserRole
role
。如何将其与
角色优先级
连接

使用


privileges
是查询集的
列表。

特定用户可能有多个用户角色,因此
UserRole.objects.get(User\u id=User\u id)
正在抛出错误OK。我正在更新我的答案。已更新我的答案。此操作有效,但需要多个查询。是否没有办法作为一个连接查询(除了执行原始查询)来执行此操作?至少我找不到任何其他方法。您可以使用原始sql。
privileges = []
user_roles = UserRole.objects.filter(user__id=USER_ID)

for user_role in user_roles:
    privileges.append(user_role.role.role_priviledge.all())