You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

114 lines
4.3 KiB

from django.db import models
# 学院表
class Academy(models.Model):
id = models.AutoField('序号',primary_key=True)
name = models.CharField('学院',max_length=20)
# 修改显示的表的名字
class Meta:
verbose_name = '学院'
verbose_name_plural = '学院'
def __str__(self):
return self.name
# 专业表
class Major(models.Model):
id = models.AutoField('序号',primary_key=True)
academy = models.ForeignKey(Academy,on_delete=models.CASCADE,verbose_name='学院')
major = models.CharField('专业',max_length=30)
# 修改显示的表的名字
class Meta:
verbose_name = '专业'
verbose_name_plural = '专业'
def __str__(self):
return self.major
# 课程表
class Course(models.Model):
id = models.AutoField('序号',primary_key=True)
course_id = models.CharField('课程号',max_length=10)
course_name = models.CharField('课程名称',max_length=30)
class Meta:
verbose_name = '课程'
verbose_name_plural = '课程'
def __str__(self):
return self.course_name
# 学生表
class Student(models.Model):
sid = models.CharField('学号',max_length=12,primary_key=True)
name = models.CharField('姓名',max_length=20,unique=True)
sex = models.BooleanField('性别',choices=((0,''),(1,'')))
age = models.IntegerField('年龄')
academy = models.ForeignKey(Academy,on_delete=models.CASCADE,verbose_name='学院')
major = models.ForeignKey(Major,on_delete=models.CASCADE,verbose_name='专业')
sclass = models.CharField('班级',max_length=20,help_text='例如: 17-03')
email = models.EmailField('邮箱',default=None) # 默认为空 唯一值
pwd = models.CharField('密码',max_length=20)
# 修改显示的表的名字
class Meta:
verbose_name = '学生'
verbose_name_plural = '学生信息表'
def __str__(self):
return self.sid
# 题库表
class QuestionBank(models.Model):
id = models.AutoField('序号',primary_key=True)
major = models.ForeignKey(Major,on_delete=models.CASCADE,verbose_name='专业')
course = models.ForeignKey(Course,on_delete=models.CASCADE,verbose_name='科目')
title = models.TextField('题目')
qtype = models.CharField('题目类型',choices=(('单选','单选'),('多选','多选'),('判断','判断')),max_length=40)
a = models.CharField('A选项',max_length=40)
b = models.CharField('B选项',max_length=40)
c = models.CharField('C选项',max_length=40)
d = models.CharField('D选项',max_length=40)
answer = models.CharField('答案',choices=(('A','A'),('B','B'),('C','C'),('D','D')),max_length=4)
difficulty = models.CharField('难度',choices=(('easy','简单'),('middle','中等'),('difficult','')),max_length=10)
score = models.IntegerField('分值')
class Meta:
# 选择这个表之后显示的名字
verbose_name = '题库'
# 显示的表名
verbose_name_plural = '题库'
def __str__(self):
return '<%s:%s>' % (self.course, self.title)
# 试卷表
class TestPaper(models.Model):
id = models.AutoField('序号',primary_key=True)
title = models.CharField('题目',max_length=40,unique=True)
pid = models.ManyToManyField(QuestionBank)
course = models.ForeignKey(Course,on_delete=models.CASCADE,verbose_name='科目')
major = models.ForeignKey(Major,on_delete=models.CASCADE,verbose_name='考卷适合专业')
time = models.IntegerField('考试时长',help_text='单位是分钟')
examtime = models.DateTimeField('上次考试时间')
class Meta:
# 选择这个表之后显示的名字
verbose_name = '试卷'
verbose_name_plural = '试卷'
# # 学生成绩表
class Record(models.Model):
id = models.AutoField('序号',primary_key=True)
sid = models.ForeignKey(Student,on_delete=models.CASCADE,verbose_name='学号',related_name='stu_xuehao')
course = models.ForeignKey(Course,on_delete=models.CASCADE,verbose_name='考试科目',related_name='stu_course')
grade = models.FloatField('成绩')
rtime = models.DateTimeField('考试时间',blank=True,null=True)
class Meta:
verbose_name = '学生成绩'
verbose_name_plural = '学生成绩'
def __str__(self):
return '<%s:%s>' % (self.sid,self.grade)