首页 > 代码库 > Django打造在线教育平台_day_2:新建users app 编写models之扩展user表

Django打造在线教育平台_day_2:新建users app 编写models之扩展user表

1、使用pycharm创建app

  Tools 工具栏运行 run manage.py Task

  输入:startapp users

2、查看django生成的默认的users表auth_user,看字段能否满足需要的,不能就在users/models.py中编写models自定义user表继承auth_user的字段。

from django.db import models

# AbstractUser包含的Django默认生成的user字段
from django.contrib.auth.models import AbstractUser
# Create your models here.

class UserProfile(AbstractUser):
    """继承AbstractUser类,自字义新类添加数据库字段"""
    # default=‘‘默认为空
    nick_name = models.CharField(max_length=50, verbose_name=u昵称, default=‘‘)
    # null=True, blank=True允许用户不填写
    birday = models.DateField(verbose_name=u生日, null=True, blank=True)

    # choices属性, 提供被选数据,这里性别只有男和女
    gender = models.CharField(max_length=5, choices=((male,), (female, )), default=female, verbose_name=u性别) #性别
    address = models.CharField(max_length=100, default=u‘‘, verbose_name=u地址)
    mobile = models.CharField(max_length=11, null=True, blank=True, verbose_name=u手机号)
    # upload_to指定头像上传文件夹
    image = models.ImageField(upload_to=image/%Y/%m, default=uimage/default.png, verbose_name=u头像,max_length=100)

    class Meta:
        verbose_name = r用户信息‘   #别称
        verbose_name_plural = verbose_name  #单数别称

    def __unicode__(self):
        """重载函数,使自定义字符串能打印"""
        return self.username

3、在MxOnline/settings.py中注册app和重载方法

# Application definition

INSTALLED_APPS = [
    django.contrib.admin,
    django.contrib.auth,
    django.contrib.contenttypes,
    django.contrib.sessions,
    django.contrib.messages,
    django.contrib.staticfiles,
    users,  # 注册App
]
# 重载AUTH_USER_MODEL方法,app名称+自定义models类名
AUTH_USER_MODEL = users.UserProfile

4、运行项目,出现如下错误,原因是我们处自义类中用到了ImageField,需要安装Pillow图片处理模块:

技术分享

  安装Pillow:pip install pillow,重新运行,报如下错误,原因是数据库没有users表

技术分享

  创建users表:

  Tools 工具栏运行 run manage.py Task

  输入:makemigrations users

  输入:migrate users

  输入:yes

  查看数据库表格输入users_userprofile创建成功

再运行项目,成功

技术分享

 

Django打造在线教育平台_day_2:新建users app 编写models之扩展user表