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()