权限管理之建表
建表之表单分析 重要
from django.db import models # Create your models here. #菜单组,给权限分组在汇总成菜单级别 class Menu(models.Model): caption=models.CharField(max_length=32) def __str__(self): return self.caption #用户表,里边用于存放用户的基本信息 还有一个角色外键,用于多对一的关联角色表 class UserInfo(models.Model): name=models.CharField(max_length=32) pwd=models.CharField(max_length=32) roles=models.ManyToManyField(to='Role') def __str__(self): return self.name #角色表,含有角色名称,和一个外键,用于多对多的关联权限表 class Role(models.Model): title=models.CharField(max_length=32) permissions=models.ManyToManyField('Permission') def __str__(self): return self.title #权限表,含有权限可访问的地址,名称,外键多对一关联到权限组,权限代码, #parent 是一个自关联的字段,关联到自己的主键, # 可以为空,当不是空时,代表它有父级权限 class Permission(models.Model): url=models.CharField(max_length=32) title=models.CharField(max_length=32) permissiongroups=models.ForeignKey('PermissionGroup',default=1) code=models.CharField(max_length=32,default='user') parent=models.ForeignKey('Permission',default=1,null=True,blank=True) def __str__(self): return self.title #权限组 将权限分成各个组,如查看用户,删除用户,编辑用户,添加用户, # 他就属于用户组, #还有一个外键,多对一关联到菜单组,如果权限太多的话,可以在汇总成菜单 class PermissionGroup(models.Model): title=models.CharField(max_length=32) captions=models.ForeignKey('Menu',default=1) def __str__(self): return self.title

admin中的注册位置![]()

通过看上边写的表单的代码,permission表中并没有下边显示的内容,正常情况在只会显示一行内容

但是在admin中做了如下操作,他就显示成如下的效果

rom django.contrib import admin # Register your models here. from .models import * admin.site.register(UserInfo) admin.site.register(Role) admin.site.register(PermissionGroup) admin.site.register(Menu) #但是在这里的话 需要让他显示出下边的那些内容,需要自定一个类,继承admin.ModelAdmin, #所以自己写一个类 list_display是控制显示出的内容的,这个在自定义的类中自己写, # 其他的没有写就是继承父类中的内容, class Permission_config(admin.ModelAdmin): list_display = ('url','title','permissiongroups','code','parent') admin.site.register(Permission,Permission_config) 这样写上之后,就能显示出如下的效果了

代码
from django.db import models # Create your models here. #菜单组,给权限分组在汇总成菜单级别 class Menu(models.Model): caption=models.CharField(max_length=32) def __str__(self): return self.caption #用户表,里边用于存放用户的基本信息 还有一个角色外键,用于多对一的关联角色表 class UserInfo(models.Model): name=models.CharField(max_length=32) pwd=models.CharField(max_length=32) roles=models.ManyToManyField(to='Role') def __str__(self): return self.name #角色表,含有角色名称,和一个外键,用于多对多的关联权限表 class Role(models.Model): title=models.CharField(max_length=32) permissions=models.ManyToManyField('Permission') def __str__(self): return self.title #权限表,含有权限可访问的地址,名称,外键多对一关联到权限组,权限代码, #parent 是一个自关联的字段,关联到自己的主键, # 可以为空,当不是空时,代表它有父级权限 class Permission(models.Model): url=models.CharField(max_length=32) title=models.CharField(max_length=32) permissiongroups=models.ForeignKey('PermissionGroup',default=1) code=models.CharField(max_length=32,default='user') parent=models.ForeignKey('Permission',default=1,null=True,blank=True) def __str__(self): return self.title #权限组 将权限分成各个组,如查看用户,删除用户,编辑用户,添加用户, # 他就属于用户组, #还有一个外键,多对一关联到菜单组,如果权限太多的话,可以在汇总成菜单 class PermissionGroup(models.Model): title=models.CharField(max_length=32) captions=models.ForeignKey('Menu',default=1) def __str__(self): return self.title
admin中代码
rom django.contrib import admin # Register your models here. from .models import * admin.site.register(UserInfo) admin.site.register(Role) admin.site.register(PermissionGroup) admin.site.register(Menu) #但是在这里的话 需要让他显示出下边的那些内容,需要自定一个类,继承admin.ModelAdmin, #所以自己写一个类 list_display是控制显示出的内容的,这个在自定义的类中自己写, # 其他的没有写就是继承父类中的内容, class Permission_config(admin.ModelAdmin): list_display = ('url','title','permissiongroups','code','parent') admin.site.register(Permission,Permission_config)

浙公网安备 33010602011771号