1 from django.db import models
  2 
  3 
  4 class User(models.Model):
  5     """
  6     用户表
  7     """
  8     username = models.CharField(verbose_name='用户名', max_length=32)
  9     password = models.CharField(verbose_name='密码', max_length=64)
 10     email = models.EmailField(verbose_name='邮箱')
 11 
 12     def __str__(self):
 13         return self.username
 14 
 15 
 16 class Role(models.Model):
 17     """
 18     角色表
 19     """
 20     caption = models.CharField(verbose_name='角色', max_length=32)
 21 
 22     def __str__(self):
 23         return self.caption
 24 
 25 
 26 class User2Role(models.Model):
 27     """
 28     用户角色关系表
 29     """
 30     user = models.ForeignKey(User, verbose_name='用户', related_name='roles',on_delete=models.CASCADE)
 31     role = models.ForeignKey(Role, verbose_name='角色', related_name='users',on_delete=models.CASCADE)
 32 
 33     def __str__(self):
 34         return '%s-%s' % (self.user.username, self.role.caption,)
 35 
 36 
 37 class Menu(models.Model):
 38     """
 39     菜单表
 40     """
 41     caption = models.CharField(verbose_name='菜单名称', max_length=32)
 42     parent = models.ForeignKey('self', verbose_name='父菜单', related_name='p', null=True, blank=True,on_delete=models.CASCADE)
 43 
 44     def __str__(self):
 45         prev = ""
 46         parent = self.parent
 47         while True:
 48             if parent:
 49                 prev = prev + '-' + str(parent.caption)
 50                 parent = parent.parent
 51             else:
 52                 break
 53         return '%s-%s' % (prev, self.caption,)
 54 
 55 
 56 class Permission(models.Model):
 57     """
 58     权限
 59     """
 60     caption = models.CharField(verbose_name='权限', max_length=32)
 61     url = models.CharField(verbose_name='URL正则', max_length=128)
 62     menu = models.ForeignKey(Menu, verbose_name='所属菜单', related_name='permissions',null=True,blank=True,on_delete=models.CASCADE)
 63 
 64     def __str__(self):
 65         return "%s-%s" % (self.caption, self.url,)
 66 
 67 
 68 class Action(models.Model):
 69     """
 70     操作:增删改查
 71     """
 72     caption = models.CharField(verbose_name='操作标题', max_length=32)
 73     code = models.CharField(verbose_name='方法', max_length=32)
 74 
 75     def __str__(self):
 76         return self.caption
 77 
 78 
 79 class Permission2Action2Role(models.Model):
 80     """
 81     权限操作关系表
 82     """
 83     permission = models.ForeignKey(Permission, verbose_name='权限URL', related_name='actions',on_delete=models.CASCADE)
 84     action = models.ForeignKey(Action, verbose_name='操作', related_name='permissions',on_delete=models.CASCADE)
 85     role = models.ForeignKey(Role, verbose_name='角色', related_name='p2as',on_delete=models.CASCADE)
 86 
 87     class Meta:
 88         unique_together = (
 89             ('permission', 'action', 'role'),
 90         )
 91 
 92     def __str__(self):
 93         return "%s-%s-%s" % (self.permission, self.action, self.role,)
 94         
 95         
 96 class Others(models.Model):
 97     my_choice = [
 98         (1, "Python"),
 99         (2, "Linux"),
100         (3, "OpenStack"),
101         (4, "GoLang"),
102     ]
103     my_choice_id = models.IntegerField(choices=my_choice, default=None)  # 在html可用obj.get_字段_display显示真实的选项,这里是obj.get_my_choice_id_display。
View Code

相关文章:

  • 2021-05-18
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-07-19
  • 2021-07-04
  • 2022-12-23
  • 2021-07-03
  • 2021-12-03
相关资源
相似解决方案