[myblog-django]創建RBAC許可權管理模型

  • 2020 年 3 月 17 日
  • 筆記

首先在Pycharm中開始一個App 名字叫做 user,這個app專門用來處理用戶相關的業務。

python manage.py startapp user

在user/model.py 下寫入以下模型

from django.dbimport models    from django.contrib.auth.modelsimport AbstractUser    # Create your models here.    class Menu(models.Model):    name = models.CharField(max_length=25,unique=True,verbose_name='菜單名')    url = models.CharField(max_length=125,unique=True,null=True,blank=True,verbose_name='URL')    parent = models.ForeignKey("self",null=True,blank=True,on_delete=models.SET_NULL,verbose_name='父菜單')    code = models.CharField(max_length=50,null=True,blank=True,verbose_name='編碼')    icon = models.CharField(max_length=50,null=True,blank=True,verbose_name='圖標')    def __str__(self):    return self.name    class Meta:    verbose_name='菜單'            verbose_name_plural=verbose_name    db_table='tb_menu'    class Role(models.Model):    """    角色綁定    """        name = models.CharField(max_length=35,unique=True,verbose_name='角色名')    permissions = models.ManyToManyField(Menu,blank=True,verbose_name='URL授權')    desc = models.CharField(max_length=50,blank=True,null=True,verbose_name="描述")    def __str__(self):    return self.name    class Meta:    verbose_name='角色'            verbose_name_plural=verbose_name    db_table='tb_role'    class UserProfile(AbstractUser):    name = models.CharField(max_length=20,default="",verbose_name="姓名")    birthday = models.DateField(null=True,blank=True,verbose_name="出生日期")    gender = models.CharField(max_length=10,choices=(("male","男"),("female","女")),default="nale",verbose_name="性別")    image = models.ImageField(upload_to="image/avatar/%Y/%m",default="iamge/avatar/default.jpg",max_length=100,null=True,blank=True)    roles = models.ManyToManyField(Role,verbose_name="角色",blank=True)    def __str__(self):    return self.name    class Meta:    verbose_name="用戶資訊"            verbose_name_plural=verbose_name    db_table="tb_userprofile"            ordering=['id']

然後製作遷移腳本

python manage.py makemigrations

執行遷移腳本

python manage.py migrate

此時資料庫的數據表也創建成功