如何在Django中添加模型的默认权限

时间:2015-07-23 09:08:31

标签: django django-authentication

我有我的用户

class User(AbstractBaseUser, PermissionsMixin):
    ...

除了django提供的默认权限外,我想为此类添加默认权限

add: user.has_perm('foo.add_user')
change: user.has_perm('foo.change_user')
delete: user.has_perm('foo.delete_user')

我该怎么做呢

这会违反默认值吗?

class User(AbstractBaseUser, PermissionsMixin):
    # model stuff here
    class Meta:
        permissions = ( 
            ( "extra_user", "Can do extra" ),
        )

1 个答案:

答案 0 :(得分:0)

此问题基本上有两个选项,属于如何扩展用户模型的常见问题。

第一个选项是将User模型完全替换为自定义模型,该模型也将包含任何自定义权限。这在相关Django documentation中有详细描述。

第二个选项是使用包含auth.User的一对一字段的自定义模型扩展当前用户模型。新模型将包含任何自定义权限,您需要检查这些权限。这在Django docs中也有描述。

如果一个人不介意(设计方面)自定义权限属于默认Django User模型的单独模型这一事实,那么第二个选项更容易编码和维护。