我是不熟悉Flask和Web开发的人。我正在创建一些表格进行练习,这就是问题所在:
student
和subject
student.id
很好时,但是当我尝试访问Student.result(整数)时,下面的错误是我的数据库模型代码。class Students(db.Model):
__tablename__ = 'students'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(80))
result = db.Column(db.Integer)
admins = db.relationship("Subjects", lazy="dynamic")
class Subjects(db.Model):
__tablename__ = 'subjects'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(80))
student = db.relationship("Student", lazy="dynamic")
student_id = db.Column(db.Integer, db.ForeignKey("students.id"))
student_result = db.Column(db.Integer, db.ForeignKey("students.result"))
添加记录时出错:
foreign key mismatch - "subjects" referencing "students" (INSERT INTO `subjects`(`id`,`name`,`student_id`,`student_result`) VALUES (1,NULL,NULL,NULL);)
答案 0 :(得分:0)
感谢您询问其他细节。我认为这里的问题是您的student_result
关系实际上不是外键。
虽然您的外键不一定需要引用主键,但是 却必须引用unique column。主键保证是唯一的。在您的类结构中,您应该通过连接student
外键上的表来获得result
的{{1}}。您根本不应该拥有student_id
关系。
student_result
顺便说一句,给您的班级名称一个复数真的很令人困惑。我建议对学生和科目的单数化。 (不过,将表名复数确实有意义。)