一、表結構設計
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張表,它呈現了權限和角色的對應關系