Django - 向用户授予自定义权限

时间:2012-02-02 12:45:24

标签: django permissions django-admin admin

我有一个用户个人资料模型,其自定义权限定义如下:

class Profile(models.Model):

    # A few profile fields here...

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

当我实际查看Django管理站点中的Profile对象时,我认为没有任何方法可以向用户实际授予此权限。

最简单的方法是什么? (例如,向用户Joe授予'can_approve'权限?)

1 个答案:

答案 0 :(得分:6)

向Meta添加权限不足以在管理面板中看到它。 Meta中定义的权限仅用于在运行manage.py syncdb时在auth_permission表中创建权限。

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

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)