django默认是创建好了user表的
在django.contrib.auth表下有一个AbstractUser模块,django设计了一些常用的字段,这段代码如下:
class AbstractUser(AbstractBaseUser, PermissionsMixin):
username_validator = UnicodeUsernameValidator() if six.PY3 else ASCIIUsernameValidator()
username = models.CharField(
_('username'),
max_length=150,
unique=True,
help_text=_('Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.'),
validators=[username_validator],
error_messages={
'unique': _("A user with that username already exists."),
},
)
first_name = models.CharField(_('first name'), max_length=30, blank=True)
last_name = models.CharField(_('last name'), max_length=30, blank=True)
email = models.EmailField(_('email address'), blank=True)
is_staff = models.BooleanField(
)
is_active = models.BooleanField(
)
date_joined = models.DateTimeField()
objects = UserManager()
EMAIL_FIELD = 'email'
USERNAME_FIELD = 'username'
REQUIRED_FIELDS = ['email']
class Meta:
verbose_name = _('user')
verbose_name_plural = _('users')
abstract = True
def clean(self):
def get_full_name(self):
def get_short_name(self):
def email_user(self, subject, message, from_email=None, **kwargs):
我们要做的就是
1.新建一个名字叫users的app,通过:startapp users
创建
2.在users.models文件下新建一个UserProfile类,继承自AbstractUser
3.在这里就可以添加想要增加的用户信息了,代码如下:
class UserProfile(AbstractUser):
GENDER = (
('male', '男'),
('female', '女')
)
nick_name = models.CharField(max_length=15, verbose_name="昵称", default="")
birthday = models.DateField(verbose_name="生日", null=True, blank=True)
gender = models.CharField(choices=GENDER, max_length=6, verbose_name="性别")
address = models.CharField(max_length=50, verbose_name="地址", null=True, blank=True)
class Meta:
verbose_name = "个人信息"
verbose_name_plural = verbose_name
def __unicode__(self):
return self.username
注意
1.添加app时一定要在设置中的APP选项中添加这个新增加的app
2.这时的django还不会识别这个新的users表,还要在setting文件夹中设置:AUTH_USER)MODEL = “users.UserProfile”
系统才会更改
3.这时使用生成数据表的makemigration操作和migrate操作就可以看到userProfile表中已经有了我们想要的所有字段,包括AbstractUser中的字段了