我在做一个MCQ问题答案db模式。但是这个给我一个错误。我对这个问题很揪心。
"无法确定关系Question.options上的父子表之间的连接条件--有多个外键路径连接着这些表。 指定'foreign_keys'参数,提供那些应该被算作包含父表外键引用的列的列表。"
class Question(db.Model):
tablename = 'question'
id = db.Column(db.Integer, primary_key=True)
question_text = db.Column(db.Text)
correct_option_id = db.Column(db.Integer, db.ForeignKey('option.id'))
options = db.relationship('Option', backref='question', lazy='dynamic')
class Option(db.Model):
tablename = 'option'
id = db.Column(db.Integer, primary_key=True)
question_id = db.Column(db.Integer, db.ForeignKey('question.id'))
option_text = db.Column(db.Text)
移除 correct_option_id
栏目来自 Question
模式。它产生了歧义。所以数据库无法识别到底什么是正确的关系,因为有2个不同的外键。
相反,在Option中创建一个名为correct_answer的布尔值列。并用它来标记正确答案。
class Question(db.Model):
tablename = 'question'
id = db.Column(db.Integer, primary_key=True)
question_text = db.Column(db.Text)
options = db.relationship('Option', backref='question', lazy='dynamic')
# Newly added
@property
def correct_option_id(self):
for option in self.options:
if option.correct_answer:
return option.id
class Option(db.Model):
tablename = 'option'
id = db.Column(db.Integer, primary_key=True)
question_id = db.Column(db.Integer, db.ForeignKey('question.id'))
option_text = db.Column(db.Text)
# Newly added
correct_answer = db.Column(db.Boolean, default=False)