我有一个用户个人资料模型,其自定义权限定义如下:
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'权限?)
答案 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)