Startapp courses 课程表 章节表 视频表 资料表
四张表:course 课程基本信息 lesson 章节信息 video视频 courseresource 课程资源表
一对多的关系:一个课程下面有多个章节 外键
视频表 为什么没有播放地址?
organization app models.py的编写
CourseOrg 课程机构信息
Teacher 教师基本信息
CityDict 城市信息
步骤:
1. 创建课程和机构应用,将创建的应用放在pps目录下
manage.py@izengzhi > startapp courses
manage.py@izengzhi > startapp organization
- setting.py添加应用配置
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'apps.blog.apps.BlogConfig',
'apps.users',
'apps.courses',
'apps.organization'
]
- 创建课程的数据库表
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models
from datetime import datetime
# 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'课程描述信息')
detail = models.TextField(verbose_name=u'课程详情')
degree = models.CharField(max_length=2, default='zj', choices=(('cj', u'初级'), ('zj', u'中级'), ('gj', u'高级')),
verbose_name=u'课程难易程度')
learn_duration = models.IntegerField(default=0, verbose_name=u'学生时长(分钟)')
student_num = models.IntegerField(default=0, verbose_name=u'学生人数')
favorites = models.IntegerField(default=0, verbose_name=u'收藏人数')
image = models.ImageField(max_length=200, upload_to='courses/%Y/%m', verbose_name=u'封面图')
click_num = 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
def __unicode__(self):
return self.name
class Lesson(models.Model):
course = models.ForeignKey(Course, verbose_name=u'所属课程')
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
def __unicode__(self):
return self.name
class Video(models.Model):
lesson = models.ForeignKey(Lesson, verbose_name=u'所属章节')
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
def __unicode__(self):
return self.name
class CourseResource(models.Model):
course = models.ForeignKey(Course, verbose_name=u'所属课程')
name = models.CharField(max_length=100, verbose_name=u'课程资源名称')
add_time = models.DateTimeField(default=datetime.now, verbose_name=u'添加时间')
downLoad = models.FileField(max_length=100, upload_to='course/resource/%Y/%m', verbose_name=u'课程资源文件')
class Meta:
verbose_name = u'课程资源'
verbose_name_plural = verbose_name
def __unicode__(self):
return self.name
- 创建机构的数据库表
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models
from datetime import datetime
# Create your models here.
class CityDict(models.Model):
name = models.CharField(max_length=20, verbose_name=u'城市名字')
desc = models.CharField(max_length=200, verbose_name=u'城市描述')
add_time = models.DateTimeField(default=datetime.now, verbose_name=u'添加时间')
class Meta:
verbose_name = u'城市信息'
verbose_name_plural = verbose_name
def __unicode__(self):
return self.name
class CourseOrg(models.Model):
city = models.ForeignKey(CityDict, verbose_name=u'所属城市')
name = models.CharField(max_length=100, verbose_name=u'机构名称')
desc = models.TextField(verbose_name=u'结构描述')
favorites = models.IntegerField(default=0, verbose_name=u'收藏人数')
image = models.ImageField(max_length=200, upload_to='courses/%Y/%m', verbose_name=u'封面图')
click_num = models.IntegerField(default=0, verbose_name=u'点击人数')
address = models.CharField(max_length=150, verbose_name=u'机构地址')
add_time = models.DateTimeField(default=datetime.now, verbose_name=u'添加时间')
class Meta:
verbose_name = u'机构信息'
verbose_name_plural = verbose_name
def __unicode__(self):
return self.name
pass
class Teacher(models.Model):
org = models.ForeignKey(CourseOrg, verbose_name=u'所属机构')
name = models.CharField(max_length=100, verbose_name=u'教师名称')
work_years = models.IntegerField(default=0, verbose_name=u'工作年限')
work_position = models.CharField(max_length=100, verbose_name=u'工作职位')
work_point = models.CharField(max_length=100, verbose_name=u'教学特点')
favorites = models.IntegerField(default=0, verbose_name=u'收藏人数')
click_num = models.IntegerField(default=0, verbose_name=u'点击人数')
address = models.CharField(max_length=150, verbose_name=u'机构地址')
add_time = models.DateTimeField(default=datetime.now, verbose_name=u'添加时间')
class Meta:
verbose_name = u'教师信息'
verbose_name_plural = verbose_name
def __unicode__(self):
return self.name
pass