50 lines
1.6 KiB
Python
50 lines
1.6 KiB
Python
"""
|
|
用户模块模型
|
|
"""
|
|
from django.contrib.auth.models import AbstractBaseUser, BaseUserManager, PermissionsMixin
|
|
from django.db import models
|
|
|
|
|
|
class UserManager(BaseUserManager):
|
|
"""用户管理器"""
|
|
|
|
def create_user(self, phone, password=None, **extra_fields):
|
|
if not phone:
|
|
raise ValueError('手机号不能为空')
|
|
user = self.model(phone=phone, **extra_fields)
|
|
if password:
|
|
user.set_password(password)
|
|
user.save(using=self._db)
|
|
return user
|
|
|
|
def create_superuser(self, phone, password=None, **extra_fields):
|
|
extra_fields.setdefault('is_staff', True)
|
|
extra_fields.setdefault('is_superuser', True)
|
|
return self.create_user(phone, password, **extra_fields)
|
|
|
|
|
|
class User(AbstractBaseUser, PermissionsMixin):
|
|
"""用户模型"""
|
|
|
|
id = models.BigAutoField(primary_key=True)
|
|
phone = models.CharField('手机号', max_length=20, unique=True)
|
|
nickname = models.CharField('昵称', max_length=50, blank=True, default='')
|
|
avatar = models.URLField('头像', max_length=500, blank=True, default='')
|
|
is_active = models.BooleanField('是否激活', default=True)
|
|
is_staff = models.BooleanField('是否管理员', default=False)
|
|
created_at = models.DateTimeField('创建时间', auto_now_add=True)
|
|
updated_at = models.DateTimeField('更新时间', auto_now=True)
|
|
|
|
objects = UserManager()
|
|
|
|
USERNAME_FIELD = 'phone'
|
|
REQUIRED_FIELDS = []
|
|
|
|
class Meta:
|
|
db_table = 'user'
|
|
verbose_name = '用户'
|
|
verbose_name_plural = '用户'
|
|
|
|
def __str__(self):
|
|
return self.phone
|