zoukankan      html  css  js  c++  java
  • Django打造在线教育平台_day_2:新建courses app 编写models

    1、新建courses app,Tools 工具栏运行 run manage.py Task输入:

    startapp courses 

    2、分析courses app,需要建立4个表最上层是课程表,章节表,视频表,资源表,层级关系如下。

        课程表

      章节表  资源表  

      视频表  

    3、编写courses/models.py

    from datetime import datetime
    from django.db import models
    
    # Create your models here.
    
    class Course(models.Model):
        name = models.CharField(max_length=50, verbose_name=u'课程名')
        desc = models.CharField(max_length=300, verbose_name=u'课程描述')
    
        # TextField 与 CharField的区别是TextField可以不限制文本长度
        detail = models.TextField(verbose_name=u'课程详情')
        degree = models.CharField(max_length=2 ,choices=(('cj',u'初级'),('zj',u'中级'),('gj',u'高级')))
        learn_times = models.IntegerField(default=0, verbose_name=u'学习时长(分钟数)')
        students = models.IntegerField(default=0, verbose_name=u'学习人数')
        fav_nums = models.IntegerField(default=0, verbose_name=u'收藏人数')
        image = models.ImageField(upload_to='courses/%Y%m', max_length=100, verbose_name=u'封面')
        click_nums = models.IntegerField(default=0, verbose_name=u'点击数')
        add_time = models.DateTimeField(default=datetime.now, verbose_name=u'添加时间')
    
        class Meta:
            verbose_name = u'课程'
            verbose_name_plural = verbose_name
    
    
    class Lesson(models.Model):
        """课程表与章节表是1对多的关系需要使用外建来完成(django外建是用来完成1对多,多对多,多对1的关系)"""
        course = models.ForeignKey(Course, verbose_name=u'课程')   # 引入外建,完成1对多的关系
        name = models.CharField(max_length=100, verbose_name=u'章节名')
        add_time = models.DateTimeField(default=datetime.now, verbose_name=u'添加时间')
    
        class Meta:
            verbose_name = u'课程章节'
            verbose_name_plural = verbose_name
    
    
    class Video(models.Model):
        lesson = models.ForeignKey(Lesson, verbose_name=u'章节')  # 引入外建,完成1对多的关系
        name = models.CharField(max_length=100, verbose_name=u'视频名')
        add_time = models.DateTimeField(default=datetime.now, verbose_name=u'添加时间')
    
        class Meta:
            verbose_name = u'课程视频'
            verbose_name_plural = verbose_name
    
    
    class CourseResource(models.Model):
        course = models.ForeignKey(Course, verbose_name=u'课程')   # 引入外建,完成1对多的关系
        name = models.CharField(max_length=100, verbose_name=u'资源名')
        add_time = models.DateTimeField(default=datetime.now, verbose_name=u'添加时间')
        download = models.FileField(upload_to='course/resource/%Y/%m', max_length=100, verbose_name=u'资源文件')
    
        class Meta:
            verbose_name = u'课程资源'
            verbose_name_plural = verbose_name

    4、在MxOnline/settings.py中注册app

    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'users',  # 注册App
        'operation',
        'courses ',
        'organization ',
    ]

     5、在数据库生成新定义的表,Tools 工具栏运行 run manage.py Task输入:

    makemigrations 
    migrate 
  • 相关阅读:
    GNU C与ANSI C的不同
    在 Windows 上使用 Cygwin
    VS2010程序调试
    VS2010中visual assist x的一些问题
    专访TK教主于旸:原来那些搞安全的说的都是真的(图灵访谈)
    程序员必看的书
    msp430学习笔记-时钟及延时函数
    指针函数与函数指针
    msp430学习笔记-IO及低功耗
    运算符优先级常识
  • 原文地址:https://www.cnblogs.com/jp-mao/p/7069805.html
Copyright © 2011-2022 走看看