Django:get_perm(permision_string)

gue*_*tli 2 django permissions

既然User.has_perm(permission_string)我认为应该有get_perm(permission_string)某个地方.

我在文档中找不到它.

如何从权限字符串中获取权限对象?

对我来说,权限字符串是这样的:'myapp.permmission_name'.

Yev*_*lev 6

所有权限都存储在权限模型中,可以这样得到:

from myapp.models import BlogPost
from django.contrib.auth.models import Group, Permission
from django.contrib.contenttypes.models import ContentType

content_type = ContentType.objects.get_for_model(BlogPost)
permission = Permission.objects.get(codename='can_publish',
                                   content_type=content_type)
Run Code Online (Sandbox Code Playgroud)

https://docs.djangoproject.com/en/1.7/topics/auth/default/#programmatically-creating-permissions

或者如果你想从字符串中获取它:

from django.contrib.auth.models import Permission
app_label, codename = your_permisssion_string.split('.')
Permission.objects.get(content_type__app_label=app_label, codename=codename)
Run Code Online (Sandbox Code Playgroud)