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 - 向用户授予自定义权限的主要内容,如果未能解决你的问题,请参考以下文章