gpt4 book ai didi

带 SQLAlchemy 的 Flask WTForms : UnmappedInstanceError when storing a form in a database

转载 作者:行者123 更新时间:2023-12-03 16:03:42 24 4
gpt4 key购买 nike

我无法使用 Flask-SQLAlchemy 将表单存储在 sqlite3 数据库中。当我尝试存储表单时,我的 views.py 抛出以下错误。

UnmappedInstanceError: Class 'app.forms.Survey1' is not mapped

View .py
@app.route('/survey_1/', methods=['GET','POST'])
@login_required
def survey_1():
form = Survey1(request.form)
if form.validate_on_submit():
print form
db.session.add(form)
db.session.commit()
return redirect(url_for('index'))
return render_template('Survey1.html', title='Survey', form=form)

模型.py
class Survey1(db.Model):
id = db.Column(db.Integer, primary_key = True)
gender = db.Column(db.Integer)
age = db.Column(db.Integer)
education = db.Column(db.Integer)
language = db.Column(db.String(20))
db = db.relationship('Database', backref='survey1', lazy='dynamic')

def __init__(self, gender=None, age=None, education=None, language=None):
self.gender=gender
self.age=age
self.education=education
self.language=language

def get_id(self):
return unicode(self.id)

表格.py
class Survey1(Form):
gender=fields.RadioField('X', choices=[('Y','Y'),('Z','Z')],validators = [Required()])
age=fields.RadioField('X', choices=[('Y','Y'),('Z','Z')], validators=[Required()])
education = fields.RadioField('X',choices=[('Y','Y'),('Z','Z')],validators=[Required()])
language = fields.TextField('Native Language', validators=[Required()])

如何存储此表单?

最佳答案

SQLAlchemy 的方法仅适用于 SQLAlchemy 对象 - 您的问题是您正在传递 WTForms Form 类的实例(SQLAlchemy 不知道如何持久保存到您的数据库)。您可以使用 Form.populate_obj 从 WTForms 类映射到您的 SQLAlchemy 对象一旦您更改了 Form 声明以匹配您的 Model 类中的类型(genderageeducation 在您的 Model 类中都标记为 Integer,但在您的 Form 中是 String 字段> 类)。

if form.validate_on_submit():
model = models.Survey1()

form.populate_obj(model)

db.session.add(model)
db.session.commit()
return redirect(url_for('index'))

关于带 SQLAlchemy 的 Flask WTForms : UnmappedInstanceError when storing a form in a database,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23507987/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com