我有一个属于用户的“个人资料”模型,这个“个人资料”模型有一些“群组”,每个群组都有自己的“权限”。
我需要获取用户的所有权限。这些是我的模特:
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