Description: Create the class models: five classes, seven tables roles and permissions table is a table-many relationship (a character can have multiple permissions, a permission can correspond to multiple roles); user and role tables are many relationship (a user can have multiple roles, a role multiple users);
First, the design table structure
Creating models in the class: class five, seven table
- Roles table:
- user table:
- Permissions table:
- Rights group table:
- Menu table:
Table roles and permissions tables are many relationships (a character may have a plurality of privilege, permission may correspond to a plurality of characters);
User and role tables are many relationships (a user may have multiple roles, a role of a plurality of users);
So there will be more to generate the relationship between two tables;
A plurality of menu groups below;
A plurality of menu group below;
A menu below more rights;
################### rights section class UserInfo (models.Model): ## user table name = models.CharField(max_length=16, blank=True, null=True, verbose_name="用户名") password = models.CharField(max_length=128, blank=True, null=True, verbose_name="密码") email = models.CharField(max_length=32, verbose_name="邮箱") userPosition = models.ForeignKey (to = "Position", blank = True, null = True, verbose_name = "post", related_name = "userposi") # users and posts many relationship def __str__(self): return self.name class Meta: verbose_name_plural = "User Table" class Position (models.Model): ## posts table name = models.CharField(max_length=16, blank=True, null=True, verbose_name="职位名") auth = models.ManyToManyField(to='Auth', blank=True, null=True, verbose_name="权限", related_name="posauth") def __str__(self): return self.name class Meta: verbose_name_plural = "Table Position" class Auth (models.Model): ## permissions table name = models.CharField (max_length = 64, blank = True, null = True, verbose_name = "The pathname") url = models.CharField(max_length=64, blank=True, null=True, verbose_name="路径") groupauth = models.ForeignKey (to = 'AuthGroup', blank = True, null = True, verbose_name = "group permissions", related_name = "authgroup") # group permissions and many relationship, a plurality of group authority def __str__(self): return self.name class Meta: verbose_name_plural = "permission form"
Three permissions table design
# Character table CREATE TABLE `sp_role` ( `role_id` smallint(6) unsigned NOT NULL AUTO_INCREMENT, `Role_name` varchar (20) NOT NULL COMMENT 'role name' `ps_ids` varchar(512) NOT NULL DEFAULT '' COMMENT '权限ids,1,2,5', `Ps_ca` text COMMENT 'Controller - operation, the controller - operation, the controller - operation', `role_desc` text, PRIMARY KEY (`role_id`) ) ENGINE=InnoDB AUTO_INCREMENT=42 DEFAULT CHARSET=utf8; #Permissions table DROP TABLE IF EXISTS `sp_permission`; CREATE TABLE `sp_permission` ( `ps_id` smallint(6) unsigned NOT NULL AUTO_INCREMENT, `Ps_name` varchar (20) NOT NULL COMMENT 'name rights' `ps_pid` smallint(6) unsigned NOT NULL COMMENT '父id', `Ps_c` varchar (32) NOT NULL DEFAULT '' COMMENT 'controller', `Ps_a` varchar (32) NOT NULL DEFAULT '' COMMENT 'Operation', `Ps_level` enum ( '0', '2', '1') NOT NULL DEFAULT '0' COMMENT 'privilege level', PRIMARY KEY (`ps_id`) ) ENGINE = InnoDB AUTO_INCREMENT = 160 DEFAULT CHARSET = utf8 COMMENT = 'permission table'; #user table DROP TABLE IF EXISTS `sp_manager`; CREATE TABLE `sp_manager` ( `mg_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键id', `Mg_name` varchar (32) NOT NULL COMMENT 'name', `Mg_pwd` char (64) NOT NULL COMMENT 'password' `Mg_time` int (10) unsigned NOT NULL COMMENT 'registration date' `role_id` tinyint(11) NOT NULL DEFAULT '0' COMMENT '角色id', `mg_mobile` varchar(32) DEFAULT NULL, `mg_email` varchar(64) DEFAULT NULL, `Mg_state` tinyint (2) DEFAULT '1' COMMENT '1: represents Enable 0: Disabled', PRIMARY KEY (`mg_id`) ) ENGINE = InnoDB AUTO_INCREMENT = 510 DEFAULT CHARSET = utf8 COMMENT = 'administrator table'; # Permissions API CREATE TABLE `sp_permission_api` ( `id` int(11) NOT NULL AUTO_INCREMENT, `ps_id` int(11) NOT NULL, `ps_api_service` varchar(255) DEFAULT NULL, `ps_api_action` varchar(255) DEFAULT NULL, `ps_api_path` varchar(255) DEFAULT NULL, `ps_api_order` int(4) DEFAULT NULL, PRIMARY KEY (`id`), KEY `ps_id` (`ps_id`) ) ENGINE=InnoDB AUTO_INCREMENT=60 DEFAULT CHARSET=utf8;
user table
Roles table
Permissions table
Permissions API table
Reference: https://www.codercto.com/a/56577.html