殺手級xadmin開發在線教育網站2_需求分析和表結構設計1

殺手級xadmin開發在線教育網站2_需求分析和表結構設計1python

項目結構

  • 新建四個apps

新建四個apps

  • settings.py中添加4個apps
INSTALLED_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',
]

數據庫設計

user的設計

  • django自帶的user裏面已經有了一些默認的字段

image.png
咱們須要結合網站的實際狀況進行擴充,經過重載 AbstractUser類來進行添加。
image.png數據庫

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,因此還須要安裝pillowapp

pipenv install pillow

而後使用makemigrationsmigrate來更新數據庫(我在這邊更新的時候出錯了,因此就刪除並重建了這個數據庫)
新的數據庫變成了這樣(命名:app的名字+class的名字)
image.png
新的字段也已經更新了
image.png數據庫設計

相關文章
相關標籤/搜索