殺手級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的名字)
新的字段也已經更新了
數據庫設計