第二章|第二章 在线教育平台(数据库设计)

数据库设计(model分层设计) 【第二章|第二章 在线教育平台(数据库设计)】标签:mysql python2.7 django1.9.8
APP分类

  • Users-用户管理
创建用户models
# _*_ encoding:utf-8 _*_ # 用户基本信息表 from __future__ import unicode_literalsfrom django.db import models from django.contrib.auth.models import AbstractUser # Create your models here.class UserProfile(AbstractUser): nike_name = models.CharField(max_length=64, verbose_name=u'用户别名', default='') birthday = models.DateField(verbose_name=u'生日', null=True, blank=True) gender = models.CharField(max_length=32, choices=(('male', u'男'), ('female', '女')), default='') address = models.CharField(max_length=128, verbose_name=u'地址', null=True, blank=True, default='') mobile = models.CharField(max_length=11, verbose_name=u'手机号', null=True, blank=True, default='') image = models.ImageField(upload_to='image/%Y/%m', default='image/default.png', max_length=128)class Meta: verbose_name = u'用户基本信息表' verbose_name_plural = verbose_namedef __unicode__(self): return self.username

基层邮箱验证和轮播图model放入用户基本信息表中
class EmailVerifyRecord(models.Model): code = models.CharField(max_length=24, verbose_name=u'验证码') email = models.EmailField(max_length=64, verbose_name=u'邮箱地址') send_type = models.CharField(choices=(('register', u'注册'), ('forget', u'找回密码')), max_length=24, verbose_name=u'验证码方式') send_time = models.DateTimeField(default=datetime.now, verbose_name=u'发送时间')class Meta: verbose_name = u'邮箱验证码发送' verbose_name_plural = verbose_nameclass Banner(models.Model): title = models.CharField(max_length=128, verbose_name=u'标题') image = models.ImageField(upload_to='banner/%Y/%m', verbose_name=u'图片地址', max_length=128) url = models.URLField(max_length=128, verbose_name=u'连接地址') index = models.IntegerField(default=100, verbose_name=u'轮播图顺序') add_time = models.DateTimeField(default=datetime.now, verbose_name=u'添加时间')class Meta: verbose_name = u'轮播图' verbose_name_plural = verbose_name

  • Course-课程管理
课程基本信息 Cource
章节信息 Lesson
视频 Video
课程资源 CourceResource
model 创建
# _*_ encoding:utf-8 _*_ from __future__ import unicode_literals from datetime import datetimefrom django.db import models# Create your models here.class Course(models.Model): name = models.CharField(max_length=128, verbose_name=u'课程名称') desc = models.CharField(max_length=256, verbose_name=u'课程描述') detail = models.TextField(verbose_name=u'课程详情') degree = models.CharField(choices=(('cj', '初级'), ('zj', '中级'), ('gj', '高级')), max_length=2, verbose_name=u'课程难度') learn_time = models.IntegerField(default=0, verbose_name=u'课程时长') students = models.IntegerField(default=0, verbose_name=u'学习人数') fav_nums = models.IntegerField(default=0, verbose_name=u'收藏人数') click_nums = models.IntegerField(default=0, verbose_name=u'点击数') image = models.ImageField(upload_to='courses/%Y/%m', verbose_name=u'封面图', max_length=128) add_time = models.DateTimeField(default=datetime.now, verbose_name=u'添加时间')class Meta: verbose_name = u'课程信息' verbose_name_plural = verbose_nameclass Lesson(models.Model): course = models.ForeignKey(Course, verbose_name=u'章节外键') name = models.CharField(max_length=128, verbose_name=u'章节名称') add_time = models.DateTimeField(datetime.now, verbose_name=u'添加时间')class Meta: verbose_name = u'章节信息' verbose_name_plural = verbose_nameclass Video(models.Model): lesson = models.ForeignKey(Lesson, verbose_name=u'视频') name = models.CharField(max_length=128, verbose_name=u'视频名称') add_time = models.DateTimeField(default=datetime.now, verbose_name=u'添加时间')class Meta: verbose_name = u'视频信息' verbose_name_plural = verbose_nameclass CourseResource(models.Model): course = models.ForeignKey(Course, verbose_name=u'资源') download = models.FileField(upload_to='course/resource/%Y/%m', verbose_name=u'下载地址', max_length=128) name = models.CharField(max_length=128, verbose_name=u'资源名称') add_time = models.DateTimeField(default=datetime.now, verbose_name=u'添加时间')class Meta: verbose_name = u'资源信息' verbose_name_plural = verbose_name

  • Organization-机构和教师管理
CourseOrg - 课程机构基本信息
Teacher - 教师基本信息
CityDict - 城市信息
model 设计
# _*_ encoding:utf-8 _*_ from __future__ import unicode_literals from datetime import datetimefrom django.db import models# Create your models here.class CityDict(models.Model): name = models.CharField(max_length=64, verbose_name=u'城市') desc = models.CharField(max_length=256, verbose_name=u'城市描述') add_time = models.DateTimeField(default=datetime.now, verbose_name=u'添加时间')class Meta: verbose_name = u'城市' verbose_name_plural = verbose_nameclass CourseOrg(models.Model): name = models.CharField(max_length=64, verbose_name=u'机构名称') desc = models.TextField(verbose_name=u'机构描述') click_nums = models.IntegerField(default=0, verbose_name=u'点击数') fav_nums = models.IntegerField(default=0, verbose_name=u'收藏数') image = models.ImageField(upload_to='org/%Y/%m', max_length=128, verbose_name=u'图片地址') address = models.CharField(max_length=64, verbose_name=u'地址') city = models.ForeignKey(CityDict, verbose_name=u'城市') add_time = models.DateTimeField(default=datetime.now, verbose_name=u'添加时间')class Meta: verbose_name = u'机构信息' verbose_name_plural = verbose_nameclass Teacher(models.Model): org = models.ForeignKey(CourseOrg, verbose_name=u'教师') name = models.CharField(max_length=64, verbose_name=u'教师名称') points = models.CharField(max_length=32, verbose_name=u'授课特点') work_years = models.IntegerField(default=0, verbose_name=u'工作年限') work_company = models.CharField(max_length=32, verbose_name=u'工作公司') work_position = models.CharField(max_length=32, verbose_name=u'工作职务') click_nums = models.IntegerField(default=0, verbose_name=u'点击数') fav_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

  • Operation-用户操作管理
UserAsk - 用户咨询
CourseComments - 用户评论
UserFavorite - 用户收藏
UserMessage - 用户消息
UserCourse - 用户学习的课程
models设计
# _*_ encoding:utf-8 _*_ from __future__ import unicode_literals from datetime import datetimefrom django.db import modelsfrom users.models import UserProfile from course.models import Course# Create your models here.class UserAsk(models.Model): name = models.CharField(max_length=64, verbose_name=u'姓名') mobile = models.CharField(max_length=11, verbose_name=u'手机号') course_name = models.CharField(max_length=64, verbose_name=u'课程名称') add_time = models.DateTimeField(default=datetime.now, verbose_name=u'添加时间')class Meta: verbose_name = u'用户咨询' verbose_name_plural =verbose_nameclass CourseComments(models.Model): # 课程评论 user = models.ForeignKey(UserProfile, verbose_name=u'用户') course = models.ForeignKey(Course, verbose_name=u'课程') comments = models.CharField(max_length=256, verbose_name=u'评价信息') add_time = models.DateTimeField(default=datetime.now, verbose_name=u'添加时间')class Meta: verbose_name = u'课程评价' verbose_name_plural = verbose_nameclass UserFavorite(models.Model): user = models.ForeignKey(UserProfile, verbose_name=u'用户') fav_id = models.IntegerField(default=0, verbose_name=u'收藏内容类型') fav_type = models.IntegerField(choices=((1, '课程'), (2, '机构'), (3, '教师')), default=1, verbose_name=u'收藏类型') add_time = models.DateTimeField(default=datetime.now, verbose_name=u'添加时间')class Meta: verbose_name = u'用户收藏' verbose_name_plural = verbose_nameclass UserMessage(models.Model): user = models.IntegerField(default=0, verbose_name=u'接受用户') message = models.CharField(max_length=512, verbose_name=u'用户评价') has_read = models.BooleanField(default=False, verbose_name=u'是否已读') add_time = models.DateTimeField(default=datetime.now, verbose_name=u'添加时间')class Meta: verbose_name = u'消息信息' verbose_name_plural = verbose_nameclass UserCourse(models.Model): user = models.ForeignKey(UserProfile, verbose_name=u'用户') course = models.ForeignKey(Course, verbose_name=u'课程') add_time = models.DateTimeField(default=datetime.now, verbose_name=u'添加时间')class Meta: verbose_name = u'用户学习课程' verbose_name_plural = verbose_name

  • app集合
将所有的app放入一个apps集合中
setting.pyimport sys# model serach sys.path.insert(0, os.path.join(BASE_DIR, 'apps'))

  • 本篇博客原视频博主[慕课在线教育平台]
  • 本篇博客撰写人: XiaoJinZi 转载请注明出处
  • 学生能力有限 附上邮箱: 986209501@qq.com 不足以及误处请大佬指责

    推荐阅读