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"]