class Permission(models.Model): """ 權限表 """ perm_name = models.CharField(verbose_name='權限名', max_length=32) url = models.CharField(verbose_name='含正則的URL地址', max_length=128, unique=True) code_name = models.CharField(verbose_name='代碼', max_length=64, unique=True, null=False, blank=False) # 視圖名代碼 def __str__(self): return self.code_name class Meta: verbose_name = "權限" verbose_name_plural = verbose_name class Role(models.Model): """ 角色表 """ role_name = models.CharField(verbose_name='角色名', max_length=32) permissions = models.ManyToManyField(verbose_name='擁有的全部權限', to=Permission, blank=True) def __str__(self): return self.role_name class Meta: verbose_name = "角色" verbose_name_plural = verbose_name class AdminUser(AbstractUser): """ 管理員信息 """ mobile = models.CharField(max_length=11, verbose_name='手機號碼', unique=True) roles = models.ManyToManyField(verbose_name='擁有的全部角色', to=Role, blank=True) def __str__(self): return self.username class Meta: db_table = 'admin_user' verbose_name = '管理者' verbose_name_plural = verbose_name
class Menu(models.Model): """ 菜單 """ title = models.CharField(verbose_name='菜單', max_length=32) icon = models.CharField(verbose_name='圖標', max_length=32) def __str__(self): return self.title class Permission(models.Model): """ 權限表 """ title = models.CharField(verbose_name='標題', max_length=32) url = models.CharField(verbose_name='含正則的URL', max_length=128, unique=True) name = models.CharField(verbose_name='代碼', max_length=64, unique=True, null=False, blank=False) pid = models.ForeignKey(verbose_name='默認選中權限', to='Permission', related_name='ps', null=True, blank=True, help_text="對於沒法做爲菜單的URL,能夠爲其選擇一個能夠做爲菜單的權限,那麼訪問時,則默認選中此權限", limit_choices_to={'menu__isnull': False}, on_delete=models.SET_NULL) menu = models.ForeignKey(verbose_name='菜單', to='Menu', null=True, blank=True, help_text='null表示非菜單', on_delete=models.SET_NULL) def __str__(self): return self.title class Role(models.Model): """ 角色 """ title = models.CharField(verbose_name='角色名稱', max_length=32) permissions = models.ManyToManyField(verbose_name='擁有的全部權限', to='Permission', blank=True) def __str__(self): return self.title class UserInfo(models.Model): """ 用戶表 """ name = models.CharField(verbose_name='用戶名', max_length=32) password = models.CharField(verbose_name='密碼', max_length=64) email = models.CharField(verbose_name='郵箱', max_length=32) roles = models.ManyToManyField(verbose_name='擁有的全部角色', to='Role', blank=True) def __str__(self): return self.name
.url