潭州课堂25班:Ph201805201 django 项目 第七课 用户模型设计 (课堂笔记

 在 user 的应用中的 models.py:

查看类的结构:

查看类的继承关系,

 用户模型设计 :

from django.db import models
from django.contrib.auth.models import AbstractUser, UserManager as _UserManager


class UserManager(_UserManager):
    """
    define user manager for modifing 'no need email'
    when 'python manager.py createsuperuser '

    """

    def create_superuser(self, username, password, email=None, **extra_fields):
        super(UserManager, self).create_superuser(username=password,
                                                  password=password, email=email, **extra_fields)


class Users(AbstractUser):
    """
    add mobile、email_active fields to Django users models.
    """
    objects = UserManager()
    # A list of the field names that will be prompted for
    # when creating a user via the createsuperuser management command.
    REQUIRED_FIELDS = ['mobile']

    # help_text在api接口文档中会用到
    # verbose_name在admin站点中会用到
    mobile = models.CharField(max_length=11, unique=True, verbose_name="手机号", help_text='手机号',
                              error_messages={'unique': "此手机号已注册"}  # 指定报错的中文信息
                              )
    email_active = models.BooleanField(default=False, verbose_name='邮箱验证状态')

    class Meta:
        db_table = "tb_users"   # 指明数据库表名
        verbose_name = "用户"    # 在admin站点中显示的名称
        verbose_name_plural = verbose_name  # 显示的复数名称

    def __str__(self):  # 打印对象时调用
        return self.username

  

在settings.py文件中添加如下配置:

# 自定义用户模型

AUTH_USER_MODEL = 'users.Users'


这样就为 django 指定用自己的用户模型


 

 查看数据库:

在这个项目中,不需要邮箱地址, 而在继承了这个类后,有个邮箱 地址的字段,有手机号字段,

所以要对模型进行修改,

继承并重写  UserManager

from django.db import models
from django.contrib.auth.models import AbstractUser,UserManager as _UserManager
#
# # Create your models here.

class UserManager(_UserManager):
    '''
    重写 UserManager
    '''
    def create_superuser(self, username, password, email=None, **extra_fields):
        super(UserManager, self).create_superuser(username=password,
                                                  password=password, email=email, **extra_fields)


class Users(AbstractUser):
    '''
    在 AbstractUser 之上添加手机号字段
    '''
    objects = UserManager()
    REQUIRED_FIELDS = ['mobile']
    mobile = models.CharField(max_length=11, unique=True, verbose_name="手机号", help_text='手机号',
                          error_messages={'unique': "此手机号已注册"}  # 指定报错的中文信息
                          )
    email_active = models.BooleanField(default=False, verbose_name='邮箱验证状态')

    # 内部类
    class Meta:
        db_table = "tb_users"                           # 指明数据库表名
        verbose_name = "用户"                             # 在admin站点中显示的名称
        verbose_name_plural = verbose_name                 # 显示的复数名称

    def __str__(self):  # 打印对象时调用
        return self.username

  

尝试 进行创建超级用户操作:  createsuperuser

猜你喜欢

转载自www.cnblogs.com/gdwz922/p/10061993.html