Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 插入到外键引用的两个表中-flask_sqlalchemy_Python_Flask Sqlalchemy - Fatal编程技术网

Python 插入到外键引用的两个表中-flask_sqlalchemy

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

我想创建一个简单的问题表,其中有一个参考答案表。对于我创建的每个问题,我应该能够为其添加至少一个答案。答案将存储在一个单独的表中,该表还将通过外键显示问题的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, 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你能提供我可以遵循的代码吗?