Django - 权限与个人资料
我有几个不同的用户角色,我想把权限和这些角色关联起来。我是这样做的:
class StudentProfile(UserProfile):
school = models.CharField(max_length=30)
class Meta:
permissions = (
("is_student","Can access student pages"),
)
但是,当我尝试用 has_perm 来检查这个角色对象是否有某个权限时,我遇到了一个错误,提示“'StudentProfile' 对象没有 'has_perm' 属性”。我是不是不应该这样检查权限呢?我看过文档,觉得应该是这样做的。
补充: 重新看了一遍文档,似乎 has_perm 是用户的一个方法,而不是他们的角色。不过,当我尝试显示权限时:
print user.get_all_permissions()
我得到的是一个空集合。我难道不应该看到类似“appname.is_student”的东西吗?
1 个回答
4
.has_perm
是一个方法,它属于 User
对象,而不是 UserProfile
对象。如果你想检查一个用户是否有权限 has_student
,你需要这样做:
user.has_perm('profiles.is_student')
假设你的 StudentProfile 模型是在一个叫 profiles
的应用里。
编辑:针对你重新表述的问题,你应该按照正常的方式分配权限,要么给一个组,要么给某个特定的用户,然后使用 User.has_perm
。你后面的例子完全违背了 Django 权限系统的设计初衷。