2

我正在尝试使用 django-guardian 为任务分配用户权限,但出现错误。

在 task/models.py 的 Task 类中,我有:

class Meta(BaseModel.Meta):
    permissions = (
        ("task_view", "Person can view task details"),
    )

当我进入

python manage.py 外壳

并尝试分配这些权限,它会引发错误。

这是我正在尝试的:

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 帮助中的说明,但也许我错过了什么?

4

2 回答 2

2

好的,看起来您必须先执行 syncdb 才能分配权限:

python manage.py syncdb --all
于 2013-09-24T14:50:43.013 回答
0

在 Gregory Goltsov 评论之后,使用 Django 1.8,我最终以update_permissions编程方式调用 django-extensions,当我执行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)

到目前为止,在将它们分配给我想要的组之前,我拥有我需要的所有权限。

于 2016-03-22T17:05:27.797 回答