Django - 权限和配置文件

时间:2011-01-04 18:46:52

标签: python django django-models django-permissions django-profiles

我有几个不同的个人资料。我想将权限与这些配置文件相关联。我这样做了:

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 个答案:

答案 0 :(得分:3)

.has_permUser对象上的方法,而不是UserProfile对象上的方法。如果您尝试验证用户是否具有has_student权限,则需要执行以下操作:

user.has_perm('profiles.is_student')

假设您的StudentProfile模型位于profiles应用程序中。

编辑:要解决您的重新定义的问题,您应该以正常方式为群组或特定用户分配权限,并使用User.has_perm。你的后一个例子完全违背了Django权限系统。