Python 插入到外键引用的两个表中-flask_sqlalchemy
我想创建一个简单的问题表,其中有一个参考答案表。对于我创建的每个问题,我应该能够为其添加至少一个答案。答案将存储在一个单独的表中,该表还将通过外键显示问题的id。这就是我目前所拥有的:Python 插入到外键引用的两个表中-flask_sqlalchemy,python,flask-sqlalchemy,Python,Flask Sqlalchemy,我想创建一个简单的问题表,其中有一个参考答案表。对于我创建的每个问题,我应该能够为其添加至少一个答案。答案将存储在一个单独的表中,该表还将通过外键显示问题的id。这就是我目前所拥有的: class Qns(db.Model): id = db.Column(db.Integer, primary_key=True) qn = db.Column(db.String, nullable=False) qn_type = db.Column(db.String, nullab
class Qns(db.Model):
id = db.Column(db.Integer, primary_key=True)
qn = db.Column(db.String, nullable=False)
qn_type = db.Column(db.String, nullable=False)
answers = db.relationship('Ans', backref='qn')
def __init__(self, qn, qn_type):
self.qn = qn
self.qn_type = qn_type
def __repr__(self):
return '<Ques %r>' % self.data
class Ans(db.Model):
id = db.Column(db.Integer, primary_key=True)
ans = db.Column(db.String, nullable=False)
qn_id = db.Column(db.Integer, db.ForeignKey('qns.id'), nullable=True, index=True)
def __init__(self, qn_id, ans):
self.qn_id = qn_id
self.ans = ans
def __repr__(self):
return '<Ans %r>' % self.data
@app.route('/', methods=['POST', 'GET'])
def index():
if request.method == 'POST':
qn = request.form['qn']
qn_type = request.form['type']
new_qn = Qns(qn=qn, qn_type=qn_type)
ans = request.form['ans']
new_ans = Ans(ans=ans)
try:
new_qn.answers.append(new_ans)
db.session.add(new_qn)
db.session.commit()
return redirect('/')
except:
return 'Error adding values to DB'
else:
return render_template('qns.html')
Qns类(db.Model):
id=db.Column(db.Integer,主键=True)
qn=db.Column(db.String,nullable=False)
qn_type=db.Column(db.String,nullable=False)
answers=db.relationship('Ans',backref='qn')
定义初始化(自、qn、qn类型):
self.qn=qn
self.qn_type=qn_type
定义报告(自我):
返回“”%self.data
Ans类(数据库模型):
id=db.Column(db.Integer,主键=True)
ans=db.Column(db.String,null=False)
qn_id=db.Column(db.Integer,db.ForeignKey('qns.id'),nullable=True,index=True)
定义初始化(self,qn_id,ans):
self.qn_id=qn_id
self.ans=ans
定义报告(自我):
return“但是没有用”。我如何获得问题的id并将其添加到我的答案表中?提前感谢。在Ans类的初始化中查看行,您输入问题id,然后输入答案。您应该能够通过在Ans类的对象创建中提供问题id来消除类型错误。@AnirudhPanchangam不敢相信我确实意识到了这一点。非常感谢!顺便说一句,我想补充更多的一个答案。目前我只能添加一个,我如何才能做到这一点?我相信插入更多具有相同问题id的答案应该会有所帮助。要做到这一点,您可能需要全局缓存问题id,以便每个答案都以正确的问题id作为外来项放入表中Key@AnirudhPanchangam你能提供我可以遵循的代码吗?