项目目录
1、在apps/users目录中的models.py中导入Django自带的User模型,并在此基础上UserProfile模型对其扩展
# models.py
from django.db import models
from django.contrib.auth.models import AbstractUser # 导入Django自带的User模块
# 模型字段(field)
# https://docs.djangoproject.com/zh-hans/3.0/ref/models/fields/#django.db.models.DateField
GENDER_CHOICES = [
("male", "男"),
("female", "女"),
]
class UserProfile(AbstractUser):
nick_name = models.CharField(verbose_name="昵称", max_length=50, default="") # 默认为空
# null is purely database-related, whereas blank is validation-related.
# If a field has blank=True, form validation will allow entry of an empty value.
# If a field has blank=False, the field will be required.
birthday = models.DateField(verbose_name="生日", null=True, blank=True)
gender = models.CharField(verbose_name="性别", max_length=6, choices=GENDER_CHOICES)
address = models.CharField(verbose_name="地址", max_length=100, default="")
mobile = models.CharField(verbose_name="手机号", max_length=11, unique=True)
# upload_to内置了strftime()函数
image = models.ImageField(upload_to="head_image/%Y/%m",default="default.jpg")
class Meta:
verbose_name = "用户信息"
verbose_name_plural = verbose_name
def __str__(self):
"""返回一个对象的描述信息"""
# print(UserProfile)
if self.nick_name:
return self.nick_name
else:
return self.username
2、在settings.py文件中注册这个模块
# settings.py
# 格式为 "<django_app名>.<model名>"
AUTH_USER_MODEL = "users.UserPorfile"
3、【如果之前已经将Django自带的模型迁移到Mysql中】清空MxOnline中所有的表
因为表之间有依赖关系,所以需要都删了
也因为表之间的依赖关系,多删几次才能全部删光所有的表
4、执行 makemigrations、migrate 命令
python manage.py makemigrations
python manage.py migrate
ps:执行过程中可能会提示缺失Pillow包,安装即可
pip install Pillow -i https://pypi.douban.com/simple
参考文档1:https://docs.djangoproject.com/en/2.2/topics/auth/customizing/#substituting-a-custom-user-model
参考文档2:https://cloud.tencent.com/developer/article/1358567
end