utils.models.permission module

class utils.models.permission.BasePermission(value, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)[源代码]

基类:TextChoices

权限基类

用于定义权限,继承此类后,可以在对应类中定义权限,如:

class UserPermission(BasePermission):
    MANAGE = choice('manage_user', '管理用户')
    AUDIT = choice('audit_user', '审核用户')
    ...
user.has_perm(UserPermission.MANAGE.perm)
perm

权限字符串,格式为`app_label.codename`,可直接用于`has_perm`判断

property perm
class utils.models.permission.PermissionModelBase(name, bases, attrs, **kwargs)[源代码]

基类:ModelBase

权限模型元类

用于自动将`Model.Permission`转换为`Model.Meta.permissions`,以便迁移和产生权限 同时提供Permission模型属性,以便插入应用数据,生成完整的权限名称

Example:

class User(models.Model, metaclass=PermissionModelBase):
    class Permission(BasePermission):
        MANAGE = choice('manage_user', '管理用户')
        AUDIT = choice('audit_user', '审核用户')
        ...
    class Meta:
        # 无需定义permissions
        pass
assert(User.Permission.MAKE.perm == 'APP_LABEL.manage_user')

警告

Permission类必须定义在Model类中,且必须命名为`Permission`

备注

在模型中定义Meta和Permission类时无需在意顺序