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

Posted

技术标签:

【中文标题】Django - 向用户授予自定义权限【英文标题】:Django - Granting custom permissions to a user 【发布时间】:2012-02-25 02:52:01 【问题描述】:

我有一个用户配置文件模型,其自定义权限定义如下:

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】:

向 Meta 添加权限不足以在管理面板中看到它。 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)

【讨论】:

以上是关于Django - 向用户授予自定义权限的主要内容,如果未能解决你的问题,请参考以下文章

为 Android M 权限对话框提供自定义文本

切换到 Django 自定义用户模型、组和权限

不确定 Django 自定义用户组和权限的方法

管理员中的 Django 自定义用户模型应用程序级别权限管理

按用户角色和 id 过滤的 Django 自定义权限

如何根据 vue.js 中的自定义权限授予访问路由的权限?