from django.db import models from django.contrib.auth.models import AbstractBaseUser, PermissionsMixin, BaseUserManager # Create your models here. class CustomUserManager(BaseUserManager): def create_user(self, username, password=None, **extra_fields): if not username: raise ValueError('The Username field must be set') user = self.model(username=username, **extra_fields) user.set_password(password) user.save(using=self._db) return user def create_superuser(self, username, password=None, **extra_fields): extra_fields.setdefault('is_staff', True) extra_fields.setdefault('is_superuser', True) return self.create_user(username, password, **extra_fields) class Permissions(models.Model): permission_name = models.CharField(max_length=255, unique=True) permission_value = models.JSONField() class Role(models.Model): role_name = models.CharField(max_length=50, unique=True) role_permission = models.ManyToManyField(Permissions, related_name='role_permission') class User(AbstractBaseUser, PermissionsMixin): uuid = models.CharField(max_length=255) username = models.CharField(verbose_name="用户名", max_length=20, unique=True) real_name = models.CharField(verbose_name="真实姓名", max_length=20, null=True, blank=True) create_time = models.DateTimeField(verbose_name="创建时间", auto_now_add=True) update_time = models.DateTimeField(verbose_name="更新时间", auto_now=True) is_active = models.BooleanField(verbose_name="是否有效", default=True, blank=True, null=True) is_staff = models.BooleanField(verbose_name="是否是员工", default=False) roles = models.ManyToManyField(Role, related_name='user_roles') USERNAME_FIELD = "username" objects = CustomUserManager()