Python Django ORM:递归多对多字段联接

Python Django ORM:递归多对多字段联接,python,django,Python,Django,我有这些模型: class Permission(models.Model): per_id = models.ForeignKey("self",null=True) permissions = models.ManyToManyField("self", null=True) type = models.IntegerField(blank=True, null=True) 以及: 我们有类型为1823的角色,这些角色指向类型为1822且权限为null的多对多递归关

我有这些模型:

class Permission(models.Model):
    per_id = models.ForeignKey("self",null=True)
    permissions = models.ManyToManyField("self", null=True)
    type = models.IntegerField(blank=True, null=True)
以及:

我们有类型为1823的角色,这些角色指向类型为1822且权限为null的多对多递归关系的多权限,角色和权限都存储在权限表中。我想使用Django ORM获得用户权限

User.objects.get(pk=3).permissions.filter(permissions__isnull=False).values("permission__id") "Gives only role's permissions

User.objects.get(pk=3).permissions.filter(permissions__isnull=True).values("id") "Gives only permissions
我想在单个查询中组合并区分这两个查询集


谢谢这样的事情解决了我的问题:

Permission.objects.filter(Q(permission__user__id=3) | Q(user__id=3), type=1822).distinct()
Permission.objects.filter(Q(permission__user__id=3) | Q(user__id=3), type=1822).distinct()