Django2.2 学习笔记 (7)_扩展自带的User模型

项目目录

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

发布了18 篇原创文章 · 获赞 0 · 访问量 576

猜你喜欢

转载自blog.csdn.net/zhsworld/article/details/103826667