2012-02-02 76 views
2

我有一个用户配置文件模型定义为一个自定义的权限如下:Django的 - 授予自定义权限用户

class Profile(models.Model): 

    # A few profile fields here... 

    class Meta: 
     permissions = (
      ('can_approve', _(u'Can review and approve new accounts')), 
     ) 

当我真正看到在Django管理站点配置文件对象,虽然,我不知道看到任何实际向用户授予此权限的方式。

这样做最简单的方法是什么? (例如,给用户Joe“can_approve”权限?)

回答

5

向管理面板中添加对元的权限是不够的。在Meta中定义的权限仅用于在运行manage.py syncdb时在auth_permission表中创建权限。

尝试运行syncdb,或手动将权限添加到数据库或从代码创建权限。它被添加到数据库后,它将在管理面板中可见。

from django.contrib.auth.models import Group, Permission 
from django.contrib.contenttypes.models import ContentType 

content_type = ContentType.objects.get(app_label='myapp', model='Profile') 
permission = Permission.objects.create(codename='can_approve', 
            name=_(u'Can review and approve new accounts'), 
            content_type=content_type)