杀手级xadmin开发在线教育网站2_需求分析和表结构设计1python
settings.py
中添加4个appsINSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'apps.courses.apps.CoursesConfig', 'apps.users.apps.UsersConfig', 'apps.organizations.apps.OrganizationsConfig', 'apps.operations.apps.OperationsConfig', ]
咱们须要结合网站的实际状况进行扩充,经过重载 AbstractUser
类来进行添加。数据库
users/models.pydjango
from django.db import models from django.contrib.auth.models import AbstractUser GENDER_CHOICES = ( ('male', '男'), ('female', '女') ) # 继承了类以后还须要在settings中配置,使其认为UserProfile才是默认的用户表 # AUTH_USER_MODEL = 'users.UserProfile' class UserProfile(AbstractUser): nick_name = models.CharField(max_length=50, verbose_name='昵称', default='') # nick_name = models.CharField(max_length=50, verbose_name='昵称', null=True, blank=True) # 上面的写法也是能够的 birthday = models.DateField(verbose_name='生日', null=True, blank=True) # 此处不使用 default ,由于不能将其自定义为当前时间 gender = models.CharField(verbose_name='性别', choices=GENDER_CHOICES, max_length=6) # max_length是由于female长度为6 address = models.CharField(max_length=100, verbose_name='地址', default='') mobile = models.CharField(max_length=11, unique=True, verbose_name='手机号码') image = models.ImageField(upload_to="head_image/%Y%m", default="default.jpg") # upload_to是至关与media的子路径,文件夹名能够传递参数(/%Y/%m 年月),ImageField其实就是一个CharField,保存的是文件路径 class Meta: verbose_name = '用户信息' verbose_name_plural = verbose_name def __str__(self): if self.nick_name: return self.nick_name else: # 只要继承了AbstractUser,那么username就是必填字段 return self.username
还须要在settings.py中配置,使其认为UserProfile才是默认的用户表session
# 已经在INSTALLED_APPS中注册好了app,因此直接以users开头便可 AUTH_USER_MODEL = 'users.UserProfile'
由于使用到了ImageField
,因此还须要安装pillow
app
pipenv install pillow
而后使用makemigrations
和migrate
来更新数据库(我在这边更新的时候出错了,因此就删除并重建了这个数据库)
新的数据库变成了这样(命名:app的名字+class的名字)
新的字段也已经更新了数据库设计