一、建表
1、用户
a. 用户表
path: GuLiEdu\apps\users\models.py
from django.db import models
from django.contrib.auth.models import AbstractUser
from datetime import datetime
# Create your models here.
# 用户信息表(数据库中自带email)
class UserProfile(AbstractUser):
image = models.ImageField(upload_to='user/',max_length=200,verbose_name="用户头像",null=True,blank=True)
nick_name = models.CharField(max_length=20,verbose_name="用户昵称",null=True,blank=True)
birthday = models.DateField(verbose_name="用户生日",null=True,blank=True)
gender = models.CharField(choices=(('girl','女'),('boy','男')),max_length=10,verbose_name="用户性别",default='girl')
address = models.CharField(max_length=200,verbose_name="用户地址",null=True,blank=True)
phone = models.CharField(max_length=11,verbose_name="用户手机",null=True,blank=True)
#这个字段控制激活
is_start = models.BooleanField(default=False,verbose_name="是否激活")
add_time = models.DateTimeField(default=datetime.now,verbose_name="添加时间")
def __str__(self):
return self.username
def get_msg_counter(self):
from operations.models import UserMessage
counter = UserMessage.objects.filter(message_man = self.id,message_status=False).count()
return counter
class Meta:
verbose_name = '用户信息'
verbose_name_plural = verbose_name
# 轮播图表
class BannerInfo(models.Model):
image = models.ImageField(upload_to='banner/',verbose_name="轮播图片",max_length=200)
url = models.URLField(default='http://www.atguigu.com',max_length=200,verbose_name="图片链接")
add_time = models.DateTimeField(default=datetime.now, verbose_name="添加时间")
def __str__(self):
return str(self.image)
class Meta:
verbose_name = '轮播图信息'
verbose_name_plural = verbose_name
# 邮箱验证码表
class EmailVerifyCode(models.Model):
code = models.CharField(max_length=20,verbose_name="邮箱验证码")
email = models.EmailField(max_length=200,verbose_name="验证码邮箱")
send_type = models.IntegerField(choices=((1,'register'),(2,'forget'),(3,'change')),verbose_name="验证码类型")
add_time = models.DateTimeField(default=datetime.now, verbose_name="添加时间")
def __str__(self):
return self.code
class Meta:
verbose_name = '邮箱验证码信息'
verbose_name_plural = verbose_name
2、机构
详情页
path: GuLiEdu\apps\orgs\models.py
from django.db import models
from datetime import datetime
from DjangoUeditor.models import UEditorField
# Create your models here.
# 城市表
class CityInfo(models.Model):
name = models.CharField(max_length=20,verbose_name="城市名称")
add_time = models.DateTimeField(default=datetime.now,verbose_name="添加时间")
def __str__(self):
return self.name
class Meta:
verbose_name = '城市信息'
verbose_name_plural = verbose_name
# 机构表
class OrgInfo(models.Model):
image = models.ImageField(upload_to='org/',max_length=200,verbose_name="机构封面")
name = models.CharField(max_length=20,verbose_name="机构名称")
course_num = models.IntegerField(default=0,verbose_name="课程数")
study_num = models.IntegerField(default=0,verbose_name="学习人数")
address = models.CharField(max_length=200,verbose_name="机构地址")
desc = models.CharField(max_length=200,verbose_name="机构简介")
detail = UEditorField(verbose_name='机构详情',
width=700,
height=400,
toolbars='full',
imagePath='ueditor/images/',
filePath='ueditor/files/',
upload_settings={'imageMaxSizing':1024000},
default='')
love_num = models.IntegerField(default=0,verbose_name="收藏数")
click_num = models.IntegerField(default=0,verbose_name="访问量")
category = models.CharField(choices=(('pxjg','培训机构'),('gx','高校'),('gr','个人')),max_length=10,verbose_name="机构类别")
cityinfo = models.ForeignKey(CityInfo,verbose_name="所在城市")
add_time = models.DateTimeField(default=datetime.now, verbose_name="添加时间")
def __str__(self):
return self.name
class Meta:
verbose_name = '机构信息'
verbose_name_plural = verbose_name
# 讲师表
class TeacherInfo(models.Model):
image = models.ImageField(upload_to='teacher/', max_length=200, verbose_name="讲师头像")
name = models.CharField(max_length=20,verbose_name="讲师姓名")
work_year = models.IntegerField(default=3,verbose_name="工作年限")
work_position = models.CharField(max_length=20,verbose_name="工作职位")
work_style = models.CharField(max_length=20,verbose_name="教学特点")
work_company = models.ForeignKey(OrgInfo,verbose_name="所属机构")
age = models.IntegerField(default=30,verbose_name="讲师年龄")
gender = models.CharField(choices=(('boy','男'),('girl','女')),max_length=10,verbose_name="讲师性别",default='boy')
love_num = models.IntegerField(default=0, verbose_name="收藏数")
click_num = models.IntegerField(default=0, verbose_name="访问量")
add_time = models.DateTimeField(default=datetime.now, verbose_name="添加时间")
def __str__(self):
return self.name
class Meta:
verbose_name = '讲师信息'
verbose_name_plural = verbose_name
3、课程
课程表
详情页
path: GuLiEdu\apps\courses\models.py
from django.db import models
from datetime import datetime
from orgs.models import OrgInfo,TeacherInfo
# Create your models here.
# 课程表
class CourseInfo(models.Model):
image = models.ImageField(upload_to='course/',max_length=200,verbose_name="课程封面")
name = models.CharField(max_length=20,verbose_name="课程名称")
study_time = models.IntegerField(default=0,verbose_name="学习时长")
study_num = models.IntegerField(default=0,verbose_name="学习人数")
level = models.CharField(choices=(('gj','高级'),('zj','中级'),('cj','初级')),max_length=5,verbose_name="课程 难度",default='cj')
love_num = models.IntegerField(default=0,verbose_name="收藏数")
click_num = models.IntegerField(default=0,verbose_name="访问量")
desc = models.CharField(max_length=200,verbose_name="课程简介")
detail = models.TextField(verbose_name="课程详情")
category = models.CharField(choices=(('qd','前端开发'),('hd','后端开发')),verbose_name="课程类别",max_length=5)
course_notice = models.CharField(max_length=200,verbose_name="课程公告")
course_need = models.CharField(max_length=100,verbose_name="课程须知")
teacher_tell = models.CharField(max_length=100,verbose_name="老师教导")
orginfo = models.ForeignKey(OrgInfo,verbose_name="所属机构")
teacherinfo = models.ForeignKey(TeacherInfo,verbose_name="所属讲师")
is_banner = models.BooleanField(default=False,verbose_name="是否轮播")
add_time = models.DateTimeField(default=datetime.now,verbose_name="添加时间")
def __str__(self):
return self.name
class Meta:
verbose_name = '课程信息'
verbose_name_plural = verbose_name
# 章节表
class LessonInfo(models.Model):
name = models.CharField(max_length=50,verbose_name="章节名称")
courseinfo = models.ForeignKey(CourseInfo,verbose_name="所属课程")
add_time = models.DateTimeField(default=datetime.now, verbose_name="添加时间")
def __str__(self):
return self.name
class Meta:
verbose_name = '章节信息'
verbose_name_plural = verbose_name
class VideoInfo(models.Model):
name = models.CharField(max_length=50, verbose_name="视频名称")
study_time = models.IntegerField(default=0,verbose_name="视频时长")
url = models.URLField(default='http://www.atguigu.com',verbose_name="视频链接",max_length=200)
lessoninfo = models.ForeignKey(LessonInfo,verbose_name="所属章节")
add_time = models.DateTimeField(default=datetime.now, verbose_name="添加时间")
def __str__(self):
return self.name
class Meta:
verbose_name = '视频信息'
verbose_name_plural = verbose_name
# 资源表
class SourceInfo(models.Model):
name = models.CharField(max_length=50, verbose_name="资源名称")
down_load = models.FileField(upload_to='source/',max_length=200,verbose_name="下载路径")
courseinfo = models.ForeignKey(CourseInfo,verbose_name="所属课程")
add_time = models.DateTimeField(default=datetime.now, verbose_name="添加时间")
def __str__(self):
return self.name
class Meta:
verbose_name = '资源信息'
verbose_name_plural = verbose_name
4、操作
path: GuLiEdu\apps\operations\models.py
from django.db import models
from datetime import datetime
from users.models import UserProfile
from courses.models import CourseInfo
# Create your models here.
# 用户咨询表
class UserAsk(models.Model):
name = models.CharField(max_length=30,verbose_name="姓名")
phone = models.CharField(max_length=11,verbose_name="手机")
course = models.CharField(max_length=20,verbose_name="课程")
add_time = models.DateTimeField(default=datetime.now,verbose_name="添加时间")
def __str__(self):
return self.name
class Meta:
verbose_name = '咨询信息'
verbose_name_plural = verbose_name
# 收藏表
class UserLove(models.Model):
love_man = models.ForeignKey(UserProfile,verbose_name="收藏用户")
love_id = models.IntegerField(verbose_name="收藏id")
love_type = models.IntegerField(choices=((1,'机构'),(2,'课程'),(3,'讲师')),verbose_name="收藏类别")
love_status = models.BooleanField(default=False,verbose_name="收藏状态")
add_time = models.DateTimeField(default=datetime.now, verbose_name="收藏时间")
def __str__(self):
return self.love_man.username
class Meta:
verbose_name = '收藏信息'
verbose_name_plural = verbose_name
#用户课程表(注意联合)
class UserCourse(models.Model):
study_man = models.ForeignKey(UserProfile, verbose_name="学习用户")
study_course = models.ForeignKey(CourseInfo,verbose_name="学习课程")
add_time = models.DateTimeField(default=datetime.now, verbose_name="学习时间")
def __str__(self):
return self.study_man.username
class Meta:
unique_together = ('study_man','study_course') #联合在一起,下一次学习就不会添加
verbose_name = '用户学习课程信息'
verbose_name_plural = verbose_name
# 用户评论表
class UserComment(models.Model):
comment_man = models.ForeignKey(UserProfile, verbose_name="评论用户")
comment_course = models.ForeignKey(CourseInfo, verbose_name="评论课程")
comment_content = models.CharField(max_length=300,verbose_name="评论内容")
add_time = models.DateTimeField(default=datetime.now, verbose_name="评论时间")
def __str__(self):
return self.comment_content
class Meta:
verbose_name = '用户评论课程信息'
verbose_name_plural = verbose_name
# 用户消息表
class UserMessage(models.Model):
message_man = models.IntegerField(default=0,verbose_name="消息用户")
message_content = models.CharField(max_length=200,verbose_name="消息内容")
message_status = models.BooleanField(default=False,verbose_name="消息状态")
add_time = models.DateTimeField(default=datetime.now, verbose_name="添加时间")
def __str__(self):
return self.message_content
class Meta:
verbose_name = '用户消息信息'
verbose_name_plural = verbose_name
二、迁移