权限管理之建表

 

 建表之表单分析          重要

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
View Code

 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)
View Code

posted on 2018-03-08 21:08  王大拿  阅读(1061)  评论(0)    收藏  举报

导航