我有这些模特:
class Permission(models.Model):
per_id = models.ForeignKey("self",null=True)
permissions = models.ManyToManyField("self", null=True)
type = models.IntegerField(blank=True, null=True)
和
class User(models.Model):
name = models.CharField(max_length=50, blank=True)
permissions = models.ManyToManyField(Permission)
我们的类型= 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
我想在单个查询中组合和区分这两个QuerySet。
感谢
答案 0 :(得分:0)
这样的事情解决了我的问题:
Permission.objects.filter(Q(permission__user__id=3) | Q(user__id=3), type=1822).distinct()