Django扩展默认的User Model
Django中为我们默认提供了用户模块User,但是其当中的字段可能并不能完全满足我们的需求,这时我们就需要自定义一个User Model出来,如果你对自带的User模型很满意,仅仅是需要添加几个额外的字段,你就可以新建一个model类继承AbstractUser, 或者你完全不需要User模型中提供的类似first_name、last_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']
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
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'
1
2
|
AUTH_USER_MODEL
=
'User.UserProfile'
|