2134
阿新 • • 發佈:2018-12-31
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'web.apps.WebConfig', 'rbac.apps.RbacConfig', ]
from django.db import models class Menu(models.Model): """ 選單表 一級選單 """ title = models.CharField(max_length=32) icon = models.CharField(max_length=64, null=True, blank=True, verbose_name='圖示') # 預設值為1 weight = models.IntegerField(default=1, verbose_name='顯示權重') def __str__(self): return self.title class Permission(models.Model): """ 許可權表 可以做二級選單的許可權 menu 關聯 選單表 不可以做選單的許可權 menu=null """ url = models.CharField(max_length=32, verbose_name='許可權') title = models.CharField(max_length=32, verbose_name='標題') menu = models.ForeignKey('Menu', null=True, blank=True) # 自己關聯自己 parent = models.ForeignKey('self', null=True, blank=True) # 寫法二 # parent = models.ForeignKey('Permission', null=True, blank=True) name = models.CharField(max_length=32, verbose_name='URL別名') class Meta: verbose_name_plural = '許可權' verbose_name = '許可權' def __str__(self): return self.title class Role(models.Model): """ 角色表 """ name = models.CharField(max_length=32, verbose_name='名稱') permissions = models.ManyToManyField('Permission', verbose_name='角色擁有的許可權', blank=True) def __str__(self): return self.name class User(models.Model): """ 使用者表 """ name = models.CharField(max_length=32, verbose_name='名稱') password = models.CharField(max_length=32, verbose_name='密碼') roles = models.ManyToManyField('Role', verbose_name='使用者擁有的角色', blank=True) def __str__(self): return self.name