当前位置: 首页 > news >正文

个人博客系列-后端项目-RBAC角色管理(6)

设计用户表

## 用户表
class User(models.Model):username = models.CharField(max_length=255, unique=True, verbose_name="手机号")password = models.CharField(max_length=255, unique=False, verbose_name="密码")is_vip = models.BooleanField(default=False,verbose_name="是否为vip")vip_expires_at = models.DateTimeField(auto_now_add=True,verbose_name="vip过期时间")is_active = models.BooleanField(default=True)class Meta:db_table = "user"verbose_name = "用户表"verbose_name_plural = verbose_name

创建角色权限表

角色表

# 角色表
class Role(models.Model):role_name = models.CharField('角色名字', max_length=16)class Meta:db_table = "blog_role"verbose_name = "角色表"verbose_name_plural = verbose_name# 权限表
class Access(models.Model):name = models.CharField('用户权限名称', max_length=256)path = models.CharField('用户权限路由', max_length=256)method = models.CharField('用户权限请求方式', max_length=16)types = models.CharField('权限类型', blank=True, null=True, max_length=10)  # 菜单权限和api权限class Meta:db_table = "blog_access"verbose_name = "权限表"verbose_name_plural = verbose_name# 用户-角色  多对多
class UserRole(models.Model):user_id = models.IntegerField('用户ID', null=True, blank=True)role_id = models.IntegerField('角色ID', null=True, blank=True)class Meta:db_table = "blog_user_role"verbose_name = "用户角色表"verbose_name_plural = verbose_name# 角色-权限 多对多
class RoleAccess(models.Model):role_id = models.IntegerField('角色ID', null=True, blank=True)acc_id = models.IntegerField('权限ID', null=True, blank=True)class Meta:db_table = "blog_role_access"verbose_name = "角色权限表"verbose_name_plural = verbose_name

数据库迁移

python manage.py makemigrations
python manage.py migrate 
http://www.lryc.cn/news/312510.html

相关文章:

  • 机器学习-启航
  • 驱动调试第014期-变频调速的原理及相关计算公式应用
  • JavaWeb环境配置 IDE2022版
  • Matlab偏微分方程拟合 | 完整源码 | 视频教程
  • 什么是yocto基本组件(bitbake,recipes,classes,configuration,layer)
  • electron 程序与安装包图标放大与制作
  • nginx,php-fpm
  • 网络编程(3/4)
  • vue computed计算属性
  • 智慧路灯物联网管理平台及应用
  • 基于OpenCV的图形分析辨认02
  • python基础——基础语法
  • vue3 vue-i18n 多语言
  • 二级水平导航菜单栏的实现
  • 在GitLab Python库中,mr.changes()和mr.diffs()的区别
  • JavaScript | 【讨论】微软早在2022年已经停用ie的今天,js开发还需要考虑ie9以下的情况嘛?
  • 网康科技 NS-ASG 应用安全网关 SQL注入漏洞复现(CVE-2024-2022)
  • 英福康INFICON软件真空Tware32中文操作手册
  • UnityAPI的学习——Quaternion类
  • chromedriverUnable to obtain driver for chrome using ,selenium找不到chromedriver
  • 剑指offer面试算法题目,自己总结的
  • 原生IP是什么?如何测试代理是不是原生IP?
  • 1、MQ_介绍、优缺点、类型等
  • Go-gin-example 第三部分 编写一个简单的文件日志系统
  • SQL中如何添加数据
  • 如何更好的理解设计模式之桥接模式
  • 归并排序
  • ELF 1技术贴|在NXP源码基础上适配开发板的按键功能
  • Linux:kubernetes(k8s)pod的基础操作(6)
  • 【Docker】掌握 Docker 镜像操作:从基础到进阶