RBAC

用户与角色 多对多 角色与权限 多多多 权限和权限组 多对一 菜单和权限组 一对多

# 用户
class UserInfo(models.Model):
    name = models.CharField(max_length=32)
    pwd = models.CharField(max_length=32, default=123)
    email = models.EmailField()
    roles = models.ManyToManyField(to="Role")

    def __str__(self):
        return self.name


# 角色
class Role(models.Model):
    title = models.CharField(max_length=32)
    permissions = models.ManyToManyField(to="Permission")

    def __str__(self):
        return self.title


# 权限表(如增删改查)
class Permission(models.Model):
    url = models.CharField(max_length=32)
    title = models.CharField(max_length=32)
    permission_group = models.ForeignKey("PermissionGroup", default=1)
    code = models.CharField(max_length=32, default="")
    <!-- 当某个权限不需要在菜单栏展示,我们就给他一个parent,这样访问他时,对应的parent权限在菜单栏就会变色 -->
    parent = models.ForeignKey("self", default=1, null=True, blank=True)


# 权限组表
class PermissionGroup(models.Model):
    caption = models.CharField(max_length=32)
    menu = models.ForeignKey("Menu", default=1)


# 菜单表
class Menu(models.Model):
    sord_num =  models.CharField(max_length=32)
    caption = models.CharField(max_length=32)


    def __str__(self):
        return self.caption


{

}

使用api.representation装饰器声明content-type

参考: https://www.shuzhiduo.com/A/kvJ34Aeg5g/

Last updated