Django - 链接关系

时间:2015-08-31 16:30:23

标签: django

我有一个属于用户的“个人资料”模型,这个“个人资料”模型有一些“群组”,每个群组都有自己的“权限”。

我需要获取用户的所有权限。这些是我的模特:

class Perfil(models.Model):
    usuario = models.OneToOneField(User)
    ...
    grupo = models.ManyToManyField(Grupo, null=True, blank=True)


class Grupo(models.Model):
    nombre = models.CharField(max_length=50)
    descripcion = models.CharField(max_length=140)
    ...
    permisos = models.ManyToManyField(Permiso,null=True,blank=True)


class Permiso(models.Model):
    nombre = models.CharField(max_length=50)
    descripcion = models.CharField(max_length=140)

我尝试过这样的事情但没有成功:

def obtener_permisos(request):
    if request.user.is_authenticated:
        grupos = Grupo.objects.filter(perfil__usuario__username=request.user.username)
        if request.user.is_superuser:
            permisos = Permiso.objects.all()
        else:
            permisos = Permiso.objects.filter(grupo__in=grupos).distinct()
        return permisos
    else:
        return None

0 个答案:

没有答案