|
|
from django import forms
|
|
|
from course.models import Course, StudentCourse, Schedule
|
|
|
|
|
|
|
|
|
# 创建课程的表单
|
|
|
class CourseForm(forms.ModelForm):
|
|
|
class Meta:
|
|
|
model = Course
|
|
|
exclude = ['status', 'teacher']
|
|
|
|
|
|
|
|
|
# 添加课程时刻表的表单
|
|
|
class ScheduleForm(forms.ModelForm):
|
|
|
class Meta:
|
|
|
model = Schedule
|
|
|
exclude = ['course']
|
|
|
|
|
|
|
|
|
# 学生的分数是记录在学生课程关系表中的,
|
|
|
# 在学生选课成功后会新建一条对应的数据。
|
|
|
# 给分,则是修改其中的分数字段,即对学生课程表模型进行更新。
|
|
|
class ScoreForm(forms.ModelForm):
|
|
|
# 其中Meta是元数据类,用于去编辑设置一些更深层次的设置。
|
|
|
# 要使用一个模型来创建表单,则在Meta元数据类中指定对应的model属性
|
|
|
class Meta:
|
|
|
model = StudentCourse
|
|
|
fields = ["student", "course", "scores", "comments"]
|
|
|
|
|
|
student = forms.CharField(label="学生", disabled=True)
|
|
|
course = forms.CharField(label="课程", disabled=True)
|
|
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
|
super().__init__(*args, **kwargs)
|
|
|
self.initial["student"] = self.instance.student
|
|
|
self.initial["course"] = self.instance.course
|
|
|
|
|
|
def clean_student(self):
|
|
|
return self.initial["student"]
|
|
|
|
|
|
def clean_course(self):
|
|
|
return self.initial["course"]
|
|
|
|
|
|
|
|
|
# 学生给老师评教和老师给学生评分的后端逻辑是一样的,都是修改学生课程关系表内的数据
|
|
|
class RateForm(forms.ModelForm):
|
|
|
class Meta:
|
|
|
model = StudentCourse
|
|
|
fields = ["course", "scores", "comments", "rating", "assessment"]
|
|
|
|
|
|
course = forms.CharField(label="课程", disabled=True)
|
|
|
scores = forms.IntegerField(label="成绩", disabled=True)
|
|
|
comments = forms.CharField(label="老师评价", disabled=True)
|
|
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
|
super(RateForm, self).__init__(*args, **kwargs)
|
|
|
self.initial["course"] = self.instance.course
|
|
|
self.initial["scores"] = self.instance.scores
|
|
|
self.initial["comments"] = self.instance.comments
|
|
|
|
|
|
def clean_course(self):
|
|
|
return self.initial["course"]
|
|
|
|
|
|
def clean_scores(self):
|
|
|
return self.initial["scores"]
|
|
|
|
|
|
def clean_comments(self):
|
|
|
return self.initial["comments"]
|