一、表结构设计
from django.db import models # Create your models here. from django.db import models class Menu(models.Model): """ 菜单表 """ title = models.CharField(verbose_name='菜单名称',max_length=32,unique=True) icon = models.CharField(max_length=128, blank=True, null=True) position = models.IntegerField(blank=True,null=True) def __str__(self): return self.title class Action(models.Model): """ 操作:增删改查 """ title = models.CharField(verbose_name='操作标题', max_length=32) code = models.CharField(verbose_name='方法', max_length=32) def __str__(self): return self.title class Permission(models.Model): """ 权限表 """ title = models.CharField(verbose_name='权限标题', max_length=32) url = models.CharField(verbose_name='含正则的URL', max_length=128) action=models.ForeignKey(verbose_name='操作',to='Action',null=True,blank=True,on_delete=models.CASCADE) parent=models.ForeignKey(verbose_name='父权限',to='self',null=True,blank=True,on_delete=models.CASCADE,limit_choices_to={'parent__isnull':True}) menu=models.ForeignKey(verbose_name='菜单',to='Menu',null=True,blank=True,on_delete=models.CASCADE) def __str__(self): return self.title class Role(models.Model): """ 角色 """ title = models.CharField(verbose_name='角色名称', max_length=32) desc = models.CharField(verbose_name='角色描述',max_length=64,null=True,blank=True) permissions = models.ManyToManyField(verbose_name='拥有的所有权限', blank=True,to='Permission') def __str__(self): return self.title class UserInfo(models.Model): """ 用户表 """ username = 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,related_name="roles", blank=True) class Meta: abstract=True def __str__(self): return self.username
二、表结构说明
上述有5张表,但因为用户表与角色表、角色表与权限表都是多对多的关系,故而会多生成2张表。
1、菜单表(Menu)
是主页右侧的菜单,它的下面是所有的get方式的权限url
2、请求方式表(Action)
是所有请求url的请求方式,在页面上的表现就是增加、修改、删除这种按钮
3、权限表(Permission)
是每一个请求的url,在页面上的表示就是所有的页面以及页面上对应的增、删、改的按钮
4、角色表(Role)
每一个用户拥有的角色
5、用户表
所有的用户信息
6、用户角色表
根据用户表和角色表的多对多关系生成的第3张表,它呈现了用户和角色的对应关系
7、角色权限表
根据权限表和角色表的多对多关系生成的第3张表,它呈现了权限和角色的对应关系