killerxadmin开发在线教育网站2_需求分析及表结构设计1项目结构新建4个app在settings.py中添加4个appINSTALLED_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',]数据库设计用户设计Django自带的用户已经有一些默认的字段,我们需要根据网站的实际情况进行扩展,通过重载AbstractUser添加班级。users/models.pyfromdjango.dbimportmodelsfromdjango.contrib.auth.modelsimportAbstractUserGENDER_CHOICES=(('male','male'),('female','female'))#继承类后,需要在settings配置中配置让它认为UserProfile是默认的用户表#AUTH_USER_MODEL='users.UserProfile'classUserProfile(AbstractUser):nick_name=models.CharField(max_length=50,verbose_name='nickname',default='')#nick_name=models.CharField(max_length=50,verbose_name='nickname',null=True,blank=True)#上面的写法也是可以的birthday=models.DateField(verbose_name='birthday',null=True,blank=True)#这里没有使用default因为不能自定义为当前时间gender=models.CharField(verbose_name='gender',choices=GENDER_CHOICES,max_length=6)#max_length是因为女性长度是6address=models.CharField(max_length=100,verbose_name='address',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,保存文件路径classMeta:verbose_name='userinformation'verbose_name_plural=verbose_namedef__str__(self):ifself.nick_name:returnself.nick_nameelse:#只要是InheritedAbstractUser,那么username就是必填字段returnself.username也需要在settings.py中配置才能使认为UserProfile是默认的用户表#app已经在INSTALLED_APPS中注册了,所以可以直接用users启动lpillow然后使用makemigrations和migrate更新数据库(我这里更新的时候出错了,所以删掉重建数据库)新的数据库变成这样(名称:应用名+类名)新的字段也更新了
