我正在尝试使用django-guardian为任务分配用户权限,但我收到错误。
在task / models.py的Task类中,我有:
class Meta(BaseModel.Meta):
permissions = (
("task_view", "Person can view task details"),
)
当我进入
python manage.py shell
并尝试分配这些权限,它会引发错误。
以下是我的尝试:
from profiles.models import SiteUser
from task.models import *
from guardian.shortcuts import assign_perm
siteuser = SiteUser.objects.get(id=2454)
task = Task.objects.get(name="asdf")
assign_perm('task_view', siteuser, task)
这是错误:
DoesNotExist:权限匹配查询不存在。
有谁知道我做错了什么?我想我遵循了django-guardian帮助中的指示,但也许我错过了什么?
答案 0 :(得分:2)
好的,看起来您必须先执行syncdb才能分配权限:
python manage.py syncdb --all
答案 1 :(得分:0)
跟随Gregory Goltsov发表评论,在Django 1.8中,我最终以编程方式调用django-extensions update_permissions
,当我执行post_migration
from django.core import management
from guardian.shortcuts import assign_perm
from django.contrib.auth.models import Permission, Group
def create_user_groups(sender, **kwargs):
management.call_command('update_permissions')
group, created = Group.objects.get_or_create(name='personal')
if created:
assign_perm('core.view_savedlocation', group)
group, created = Group.objects.get_or_create(name='business')
if created:
assign_perm('core.add_savedlocation', group)
assign_perm('core.change_savedlocation', group)
assign_perm('core.view_savedlocation', group)
assign_perm('core.delete_savedlocation', group)
到目前为止,在将它们分配给我想要的群组之前,我拥有所需的所有权限。