创建课程+增加抽象基类+课程相关5张表设计
一、创建课程
1.创建course模型
1.1 创建用户模型course
python ../manage.py startapp course # 创建course模型
1.2 在setting.py中注册course模型(第一步)
INSTALLED_APPS = [
'course.apps.CourseConfig',
]
# 注:pycharm无法联想,需要把apps文件夹设置为源根
1.3 syl/urls.py添加路由(第二步)
urlpatterns = [
path('course/', include('course.urls')),
]
1.4 创建 course/urls.py路由文件(第三步)
from django.urls import path, re_path
from . import views
urlpatterns = [
]
二、增加抽象基类
1.syl/utils/MyBaseModel.py增加抽象基 类
from django.db import models
class Base(models.Model):
create_time = models.DateTimeField('创建时间', auto_now_add=True, null=True)
update_time = models.DateTimeField('更新时间', auto_now=True, null=True)
class Meta:
abstract = True
三、课程相关5张表设计
1.课程主页面3张表
from django.db import models
from utils.MyBaseModel import Base
class CourseType(Base):
title = models.CharField('课程类别', max_length=16)
sequence = models.IntegerField('展示顺序', default=10)
class Meta:
db_table = 'tb_coursetype'
def __str__(self):
return self.title
class CourseTag(Base):
title = models.CharField('课程标签', max_length=16)
sequence = models.IntegerField('展示顺序', default=10)
class Meta:
db_table = 'tb_coursetag'
def __str__(self):
return self.title
class Course(Base):
STATUS = (
('0', '即将上线'),
('1', '已上线'),
('2', '已下线'),
)
title = models.CharField('课程名', max_length=24)
desc = models.CharField('课程描述', max_length=256)
img = models.ImageField('课程logo', upload_to='course', null=True)
course_type = models.ForeignKey(CourseType, verbose_name='课程类型',
on_delete=models.SET_NULL, default=None, null=True)
course_tag = models.ManyToManyField(CourseTag, verbose_name='课程标签')
status = models.CharField('课程状态', choices=STATUS, max_length=8,
default='1')
attention = models.IntegerField('关注人数', default=0)
learner = models.IntegerField('学习人数', default=0)
class Meta:
db_table = 'tb_course'
def __str__(self):
return self.title
2.课程章节表2张表
class Chapters(Base):
title = models.CharField('章标题', max_length=24)
serial_num = models.IntegerField('章序号')
course = models.ForeignKey(Course, related_name='chapters',
on_delete=models.SET_NULL, null=True)
class Meta:
db_table = 'tb_chapters'
def __str__(self):
return self.title
class Sections(Base):
title = models.CharField('节标题', max_length=24)
serial_num = models.IntegerField('节序号')
chapters = models.ForeignKey(Chapters, related_name='sections',
on_delete=models.SET_NULL, null=True)
learn_time = models.IntegerField('学习小时', default=1)
video = models.FileField("上传视频", upload_to="videos/%Y%m%d/", blank=True,
max_length=1024)
seq_num = models.IntegerField("序号", default=1)
class Meta:
db_table = 'tb_sections'
def __str__(self):
return self.title
3.course/admin.py注册后台管理
from django.contrib import admin
from . import models
admin.site.register(models.CourseType)
admin.site.register(models.CourseTag)
admin.site.register(models.Course)
admin.site.register(models.Sections)
admin.site.register(models.Chapters)
4.迁移表
python manage.py makemigrations
python manage.py migrate