hak*_*aki 2 django permissions django-1.7
这里发生了什么 ?
> from django.contrib.auth.models import Permission
> from django.contrib.contenttypes.models import ContentType
> p = Permission.objects.filter(
content_type = ContentType.objects.get_for_model(Transaction)
).get(
codename = 'add_transaction'
)
> user.user_permissions.add(p)
> user.user_permissions.all()
[<Permission: myapp | Transaction | Can add Transaction>]
> user.get_all_permissions()
set([])
> user.has_perm('add_transaction')
False
> user.has_perm('myapp.add_transaction')
False
Run Code Online (Sandbox Code Playgroud)
我是否在某处错过了保存?
缓存ModelBackend用户对象的权限。Django文档建议您在更改权限后从数据库重新加载用户。
user.user_permissions.add(p)
user = User.objects.get(pk=user.pk)
Run Code Online (Sandbox Code Playgroud)