博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
rbac models
阅读量:7032 次
发布时间:2019-06-28

本文共 2849 字,大约阅读时间需要 9 分钟。

class Permission(models.Model):    """    权限表    """    perm_name = models.CharField(verbose_name='权限名', max_length=32)    url = models.CharField(verbose_name='含正则的URL地址', max_length=128, unique=True)    code_name = models.CharField(verbose_name='代码', max_length=64, unique=True, null=False, blank=False)    # 视图名代码    def __str__(self):        return self.code_name    class Meta:        verbose_name = "权限"        verbose_name_plural = verbose_nameclass Role(models.Model):    """    角色表    """    role_name = models.CharField(verbose_name='角色名', max_length=32)    permissions = models.ManyToManyField(verbose_name='拥有的所有权限', to=Permission, blank=True)    def __str__(self):        return self.role_name    class Meta:        verbose_name = "角色"        verbose_name_plural = verbose_nameclass AdminUser(AbstractUser):    """ 管理员信息 """    mobile = models.CharField(max_length=11, verbose_name='手机号码', unique=True)    roles = models.ManyToManyField(verbose_name='拥有的所有角色', to=Role, blank=True)    def __str__(self):        return self.username    class Meta:        db_table = 'admin_user'        verbose_name = '管理者'        verbose_name_plural = verbose_name

 

 

 

class Menu(models.Model):    """    菜单    """    title = models.CharField(verbose_name='菜单', max_length=32)    icon = models.CharField(verbose_name='图标', max_length=32)    def __str__(self):        return self.titleclass Permission(models.Model):    """    权限表    """    title = models.CharField(verbose_name='标题', max_length=32)    url = models.CharField(verbose_name='含正则的URL', max_length=128, unique=True)    name = models.CharField(verbose_name='代码', max_length=64, unique=True, null=False, blank=False)    pid = models.ForeignKey(verbose_name='默认选中权限', to='Permission', related_name='ps', null=True, blank=True,                            help_text="对于无法作为菜单的URL,可以为其选择一个可以作为菜单的权限,那么访问时,则默认选中此权限",                            limit_choices_to={
'menu__isnull': False}, on_delete=models.SET_NULL) menu = models.ForeignKey(verbose_name='菜单', to='Menu', null=True, blank=True, help_text='null表示非菜单', on_delete=models.SET_NULL) def __str__(self): return self.titleclass Role(models.Model): """ 角色 """ title = models.CharField(verbose_name='角色名称', max_length=32) permissions = models.ManyToManyField(verbose_name='拥有的所有权限', to='Permission', blank=True) def __str__(self): return self.titleclass UserInfo(models.Model): """ 用户表 """ name = models.CharField(verbose_name='用户名', max_length=32) password = models.CharField(verbose_name='密码', max_length=64) email = models.CharField(verbose_name='邮箱', max_length=32) roles = models.ManyToManyField(verbose_name='拥有的所有角色', to='Role', blank=True) def __str__(self): return self.name

 

 

 

.

转载于:https://www.cnblogs.com/zhaoyunlong/p/10670989.html

你可能感兴趣的文章
360首席安全官谭晓生宣布离职
查看>>
在敏捷中应用测试驱动开发
查看>>
到底谁应该对软件开发的质量负责?
查看>>
微软Windows Core OS被曝应用了开源组件
查看>>
用Elm语言降低失败的风险
查看>>
资深专家都知道的Docker常用命令
查看>>
谈谈UCloud的秒级在线快照服务
查看>>
Spring Web Services 3.0.4.RELEASE和2.4.3.RELEASE发布
查看>>
EGO走进美团——追寻千亿市场背后的技术力量
查看>>
腾讯正式宣布成立技术委员会,要对组织架构下狠手
查看>>
3·15曝光丨智能机器人一年拨打40亿个骚扰电话,6亿人信息已遭泄露!
查看>>
腾讯携手中科院国家天文台落地FAST 用云计算探索星辰大海
查看>>
随机森林算法4种实现方法对比测试:DolphinDB速度最快,XGBoost表现最差
查看>>
详解前端异步编程的六种方案
查看>>
红帽论坛北京站召开 设立亚太开放创新实验室
查看>>
苏宁11.11:如何基于异步化打造会员任务平台?
查看>>
区块链和数据科学:如果同时应用这两种技术,将会实现什么?
查看>>
Oracle即将发布的全新Java垃圾收集器 ZGC
查看>>
深入浅出Tensorflow(三):训练神经网络模型的常用方法
查看>>
Blazor将.NET带回到浏览器
查看>>