Django自定义用户表

背景

有时候我们需要自己定义django用户表,而django也提供了这样的接口供我们使用

使用

  1. 在项目settings.py文件中添加配置项

    1
    2
    3
    # django认证系统使用的模型类,
    # 当配置该选项后,创建迁移时,就不会再使用默认的auth_user,而是使用该配置指向的数据表
    AUTH_USER_MODEL = 'users.User'
  2. 在创建User表的模型类的时候,让其继承AbstractUser类

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    # 导入AbstractUser类
    from django.contrib.auth.models import AbstractUser

    # BaseModel是我们自定义的模型基类,里面定义了所有表都有的字段信息
    # 通过该方法生成User表后,django就不会再生成默认的django_user表了
    class User(AbstractUser, BaseModel):
    '''用户个人信息表'''

    class Meta:
    db_table = 'df_user'
    verbose_name = '用户'
    verbose_name_plural = verbose_name
  3. (号外)当我们需要往用户表中插入数据的时候,可以直接使用create_user方法,更加的快捷

    1
    2
    # create_user方法的返回值是插入进表的数据本身
    new_user = User.objects.create_user(username=username, password=password, email=email)