zoukankan      html  css  js  c++  java
  • -课程主页之课程表分析

    课程表分析

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    classCourse(models.Model):
    name = models.CharField(max_length=64)
    title = models.CharField(max_length=64)
    students = models.IntegerField(default=0)
    level = models.IntegerField(choices=((0, '入门'), (1, '进阶')), default=0)
    time = models.IntegerField(default=0)
    detail = models.TextField() # 可以关联详情表
    type = models.IntegerField(choices=((0, 'Python'), (1, 'Linux')), default=0)
    is_show = models.BooleanField(default=False)

    classMeta:
    abstract = True

    # 免费课
    classFreeCourse(Course):
    image = models.ImageField(upload_to='course/free')
    attachment = models.FileField(upload_to='attachment')

    # 实战课
    classActualCourse(Course):
    image = models.ImageField(upload_to='course/actual')
    price = models.DecimalField(max_digits=7, decimal_places=2)
    cost = models.DecimalField(max_digits=7, decimal_places=2)

    # 轻课
    classLightCourse(Course):
    image = models.ImageField(upload_to='course/light')
    price = models.DecimalField(max_digits=7, decimal_places=2)
    cost = models.DecimalField(max_digits=7, decimal_places=2)
    period = models.IntegerField(verbose_name='学习建议周期(month)', default=0)

    # 评论表:分三个表、(id,ctx,date,user_id,free_course_id, comment_id)
    # 老师表:在课程表建立多对一外键
    # 章节表:在章节表建立多对一外键关联课程
    # 课时表:在课时表建立多对一外键关联章节

    免费课案例

    创建models:course/models.py
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    classCourseCategory(BaseModel):
    """分类"""
    name = models.CharField(max_length=64, unique=True, verbose_name="分类名称")
    classMeta:
    db_table = "luffy_course_category"
    verbose_name = "分类"
    verbose_name_plural = verbose_name

    def__str__(self):
    return "%s" % self.name
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    classCourse(BaseModel):
    """课程"""
    course_type = (
    (0, '付费'),
    (1, 'VIP专享'),
    (2, '学位课程')
    )
    level_choices = (
    (0, '初级'),
    (1, '中级'),
    (2, '高级'),
    )
    status_choices = (
    (0, '上线'),
    (1, '下线'),
    (2, '预上线'),
    )
    name = models.CharField(max_length=128, verbose_name="课程名称")
    course_img = models.ImageField(upload_to="courses", max_length=255, verbose_name="封面图片", blank=True, null=True)
    course_type = models.SmallIntegerField(choices=course_type, default=0, verbose_name="付费类型")
    # 使用这个字段的原因
    brief = models.TextField(max_length=2048, verbose_name="详情介绍", null=True, blank=True)
    level = models.SmallIntegerField(choices=level_choices, default=0, verbose_name="难度等级")
    pub_date = models.DateField(verbose_name="发布日期", auto_now_add=True)
    period = models.IntegerField(verbose_name="建议学习周期(day)", default=7)
    attachment_path = models.FileField(upload_to="attachment", max_length=128, verbose_name="课件路径", blank=True,
    null=True)
    status = models.SmallIntegerField(choices=status_choices, default=0, verbose_name="课程状态")
    course_category = models.ForeignKey("CourseCategory", on_delete=models.SET_NULL, db_constraint=False, null=True, blank=True,
    verbose_name="课程分类")
    students = models.IntegerField(verbose_name="学习人数", default=0)
    sections = models.IntegerField(verbose_name="总课时数量", default=0)
    pub_sections = models.IntegerField(verbose_name="课时更新数量", default=0)
    price = models.DecimalField(max_digits=6, decimal_places=2, verbose_name="课程原价", default=0)
    teacher = models.ForeignKey("Teacher", on_delete=models.DO_NOTHING, null=True, blank=True, verbose_name="授课老师")

    classMeta:
    db_table = "luffy_course"
    verbose_name = "课程"
    verbose_name_plural = "课程"

    def__str__(self):
    return"%s" % self.name
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    classTeacher(BaseModel):
    """导师"""
    role_choices = (
    (0, '讲师'),
    (1, '导师'),
    (2, '班主任'),
    )
    name = models.CharField(max_length=32, verbose_name="导师名")
    role = models.SmallIntegerField(choices=role_choices, default=0, verbose_name="导师身份")
    title = models.CharField(max_length=64, verbose_name="职位、职称")
    signature = models.CharField(max_length=255, verbose_name="导师签名", help_text="导师签名", blank=True, null=True)
    image = models.ImageField(upload_to="teacher", null=True, verbose_name="导师封面")
    brief = models.TextField(max_length=1024, verbose_name="导师描述")

    classMeta:
    db_table = "luffy_teacher"
    verbose_name = "导师"
    verbose_name_plural = verbose_name

    def__str__(self):
    return "%s" % self.name
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    classCourseChapter(BaseModel):
    """章节"""
    course = models.ForeignKey("Course", related_name='coursechapters', on_delete=models.CASCADE, verbose_name="课程名称")
    chapter = models.SmallIntegerField(verbose_name="第几章", default=1)
    name = models.CharField(max_length=128, verbose_name="章节标题")
    summary = models.TextField(verbose_name="章节介绍", blank=True, null=True)
    pub_date = models.DateField(verbose_name="发布日期", auto_now_add=True)

    classMeta:
    db_table = "luffy_course_chapter"
    verbose_name = "章节"
    verbose_name_plural = verbose_name

    def__str__(self):
    return "%s:(第%s章)%s" % (self.course, self.chapter, self.name)
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    classCourseSection(BaseModel):
    """课时"""
    section_type_choices = (
    (0, '文档'),
    (1, '练习'),
    (2, '视频')
    )
    chapter = models.ForeignKey("CourseChapter", related_name='coursesections', on_delete=models.CASCADE,
    verbose_name="课程章节")
    name = models.CharField(max_length=128, verbose_name="课时标题")
    orders = models.PositiveSmallIntegerField(verbose_name="课时排序")
    section_type = models.SmallIntegerField(default=2, choices=section_type_choices, verbose_name="课时种类")
    section_link = models.CharField(max_length=255, blank=True, null=True, verbose_name="课时链接",
    help_text="若是video,填vid,若是文档,填link")
    duration = models.CharField(verbose_name="视频时长", blank=True, null=True, max_length=32) # 仅在前端展示使用
    pub_date = models.DateTimeField(verbose_name="发布时间", auto_now_add=True)
    free_trail = models.BooleanField(verbose_name="是否可试看", default=False)

    classMeta:
    db_table = "luffy_course_Section"
    verbose_name = "课时"
    verbose_name_plural = verbose_name

    def__str__(self):
    return"%s-%s" % (self.chapter, self.name)
    注册models:course/adminx.py
    1
    2
    3
    4
    5
    6
    7
    import xadmin
    from . import models
    xadmin.site.register(models.CourseCategory)
    xadmin.site.register(models.Course)
    xadmin.site.register(models.Teacher)
    xadmin.site.register(models.CourseChapter)
    xadmin.site.register(models.CourseSection)
    数据库迁移
    1
    2
    >: python manage.py makemigrations
    >: python manage.py migrate
    每天逼着自己写点东西,终有一天会为自己的变化感动的。这是一个潜移默化的过程,每天坚持编编故事,自己不知不觉就会拥有故事人物的特质的。 Explicit is better than implicit.(清楚优于含糊)
  • 相关阅读:
    解决AJAX中使用UpdatePanel后再用无法弹出对话框问题
    <转>JavaScript 参考教程资料之文档对象
    C#中图片的重绘
    csv数据源的创建(二)
    开始试用windows live writer
    与BW相关各模块常用tcode及Table
    SAP中的client(也叫集团)的意义
    SAP中的client(也叫集团)的意义(中文版)
    BW报表igs服务配置解决中文显示问题
    开源.net论坛有那些?
  • 原文地址:https://www.cnblogs.com/kylin5201314/p/14315455.html
Copyright © 2011-2022 走看看