共有3个班,每个班10名学生。每个班级都有自己的班主任。当学生提交表格并选择班主任身份时,我必须确保他选择了自己的老师。否则,应该显示错误消息。
CREATE TABLE student(
id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
first_name VARCHAR(255) NOT NULL,
last_name VARCHAR(255) NOT NULL,
class_id INTEGER NOT NULL,
pcourse_id INTEGER NOT NULL,
FOREIGN KEY (class_id) REFERENCES class(id),
FOREIGN KEY (pcourse_id) REFERENCES course(id)
);
CREATE TABLE teacher(
id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
first_name VARCHAR(255) NOT NULL,
last_name VARCHAR(255) NOT NULL
);
学生.class_id = 教师.id
这是我的调查页面的 app.py 代码。帮助我如何以及在哪里放置检查学生是否选择了自己的老师的语句。否则,显示错误消息。
@app.route("/questionnaire/page", methods = ["GET", "POST"])
def questionnaire():
cursor = get_db().cursor()
if request.method == "POST":
try:
form = request.form
student_id = int(form.get("student_id"))
cursor.execute("BEGIN")
cursor.execute("""
SELECT id
FROM student
WHERE id =?
LIMIT 1
""", [student_id])
if cursor.fetchone():
cursor.execute("COMMIT")
return render_template("questionnaire_already_answered.html")
except (TypeError, ValueError, sqlite3.DatabaseError):
abort(400)
cursor.execute("SELECT * FROM student")
students = cursor.fetchall()
teachers = cursor.execute("SELECT * FROM teacher")
teachers = cursor.fetchall()
courses = cursor.execute("SELECT * FROM course")
courses = cursor.fetchall()
return render_template("questionnaire.html", students = students, teachers = teachers, courses = courses)
如果您想确保学生选择自己的班主任,您应该直接连接学生和老师。由于每个班级都有自己的班主任,因此您可以根据学生所属的班级将学生与他们的老师联系起来。
您需要将像
class_teacher
这样的列添加到您的 class
表中。 class_teacher
应存储每个班级的班主任老师的ID。这样每个班就有指定老师了。
此外,在您的调查问卷页面代码中,您应该验证当学生选择教师时,该教师是否与其指定的班主任相对应。您可以通过从数据库中检索该学生所在班级的班主任老师并确认所选老师是否匹配来实现。