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.

68 lines
2.2 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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