Python第44-45天 权限表设计

文章目录

2019-1-29 21:20:30

权限表设计

  • 权限表关系
    • 下图为权限管理的通用模型,不过在企业开发中根据系统自身特点还会对上图进行修改
    • 但是用户、角色(岗位)、权限、用户角色关系、角色权限关系是必不可少的。

Python第44-45天 权限表设计

  • modles设计
#modles.py
class UserInfo(models.Model):
    username = models.CharField(max_length=32,blank=True,null=True,verbose_name='用户名')
    password = models.CharField(max_length=32,blank=True,null=True,verbose_name='密码')
    roles = models.ManyToManyField('Role', verbose_name='用户拥有的角色', blank=True)

    def __str__(self):
        return self.username

class Role(models.Model):
    """
    角色表
    """
    name = models.CharField(max_length=32, verbose_name='名称')
    permissions = models.ManyToManyField('Permission', verbose_name='角色拥有的权限', blank=True)

    def __str__(self):
        return self.name

class Permission(models.Model):
    """
    权限表
    可以做二级菜单的权限   menu 关联 菜单表
    不可以做菜单的权限    menu=null
    """
    url = models.CharField(max_length=32, verbose_name='权限')
    title = models.CharField(max_length=32, verbose_name='标题')
    menu = models.ForeignKey('Menu', null=True, blank=True)
    # 自己关联自己
    parent = models.ForeignKey('self', null=True, blank=True)
    # 写法二
    # parent = models.ForeignKey('Permission', null=True, blank=True)
    name = models.CharField(max_length=32, verbose_name='URL别名')

    class Meta:
        verbose_name_plural = '权限'
        verbose_name = '权限'

    def __str__(self):
        return self.title

class Menu(models.Model):
    """
    菜单表  一级菜单
    """
    title = models.CharField(max_length=32)
    icon = models.CharField(max_length=64, null=True, blank=True, verbose_name='图标')
    # 默认值为1
    weight = models.IntegerField(default=1, verbose_name='显示权重')

    def __str__(self):
        return self.title



给TA打赏
共{{data.count}}人
人已打赏
开发

Python第46天 后台admin增加数据

2023-9-11 18:33:07

开发

Python第43天 阿里云API简单使用

2023-9-11 18:33:09

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索