为什么 django-guardian 的assign_perm给了我一个 DoesNotExists 错误?



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

在任务/模型.py的任务类中,我有:

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)

这是错误:

不存在:权限匹配查询不存在。

有谁知道我做错了什么?我想我按照 django-guardian 帮助中的说明进行操作,但也许我错过了一些东西?

好的,看起来您必须先进行同步才能分配权限:

python manage.py syncdb --all

在Gregory Goltsov评论之后,在Django 1.8中,我最终以编程方式调用了Django扩展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)

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

相关内容

  • 没有找到相关文章

最新更新