我有几个不同的个人资料。我想将权限与这些配置文件相关联。我这样做了:
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”
这样的东西答案 0 :(得分:3)
.has_perm
是User
对象上的方法,而不是UserProfile
对象上的方法。如果您尝试验证用户是否具有has_student权限,则需要执行以下操作:
user.has_perm('profiles.is_student')
假设您的StudentProfile模型位于profiles
应用程序中。
编辑:要解决您的重新定义的问题,您应该以正常方式为群组或特定用户分配权限,并使用User.has_perm
。你的后一个例子完全违背了Django权限系统。