Django扩展默认的User Model

2017/11/27 posted in  Django学习

Django中为我们默认提供了用户模块User,但是其当中的字段可能并不能完全满足我们的需求,这时我们就需要自定义一个User Model出来,如果你对自带的User模型很满意,仅仅是需要添加几个额外的字段,你就可以新建一个model类继承AbstractUser, 或者你完全不需要User模型中提供的类似first_namelast_name这些字段,你可以将model类继承AbstractBaseUser,这样只会保留password,last_login,is_active这三个字段。

本文介绍的是继承自AbstractUser的用法

在models.py中新建一个model继承自AbstractUser

from django.db import models

# Create your models here.
from django.contrib.auth.models import AbstractUser
from enum import Enum


class UserProfile(AbstractUser):

    GENDER = [
        (0,"未知"),
        (1,"男性"),
        (2,"女性")
    ]

    nickname = models.CharField(max_length=50)
    intro = models.CharField(max_length=500)
    mobile = models.CharField(max_length=13)
    gender = models.IntegerField(choices=GENDER,default=0)

    REQUIRED_FIELDS = ['nickname', 'intro', 'mobile', 'gender']

在setting.py中设置 AUTH_USER_MODEL

AUTH_USER_MODEL = 'User.UserProfile'