2016-03-29 64 views
0

我在元自定义权限:Django自定义权限不被识别?

class Meta(): #extra bit of info 
    model = User 
    permissions = (
     ("has_uploaded", ("Has uploaded")), 
     ("is_authenticated", ("Is authenticated")), 
    ) 
    fields = ('email','emailConfirm','password1','biography','research_place','studies') 
然而

当我尝试做

is_auth_perm = Permission.objects.get(codename='is_authenticated') 
request.user.user_permissions.add("is_auth_perm") 
在我的意见

我得到的许可不存在,即使我做迁移错误,执行syncdb。难道我做错了什么?

+1

你正在使用is_auth_perm作为一个字符串,这是一个错字这里还是在你的代码'.add(“is_auth_perm”)'? – danielcorreia

+0

@danielcorreia感谢您注意到,但这不是整个错误,因为错误是特别与is_auth_perm =等线。 – swedishfished

回答

1

在首次初始化数据库之后,您是否已将权限添加到模型中?如果是这样,即使迁移,新权限也不会自动添加到数据库中。

要添加新权限,可以使用django-extensions包中的update_permissionsmanage.py命令。

+0

嗨,是的,这一定是我的错误。我安装了django-extensions,添加到了settings.py安装的应用程序,并在控制台中运行了“python manage.py update_permissions” - 它运行了命令,但没有输出任何内容。但是我仍然得到“权限匹配查询不存在”。错误? – swedishfished

+1

今天再次看到你的问题后,我注意到,你的元类有'model'和'field'属性......这通常不是模型元类的情况,而是表单元类。你有没有把你的自定义权限放在你的一个表单中?如果是这样,将它们移动到您的模型,然后使用'update_permissions'来同步权限 – Tim

+0

是的,这是它非常感谢你 – swedishfished