首页 > 解决方案 > 在同一页面上使用多个相同的flaskform类别,并分别提交到数据库

问题描述

我有一个包含以下类别的烧瓶:

`class TestForm(FlaskForm):
    question: ('Question')
    likelihood = SelectField('Likelihood',choices=[('1','1'),('2','2'),('3','3'),('4','4'),('5','5')])
    impact = SelectField('Impact', choices=[('1','1'),('2','2'),('3','3'),('4','4'),('5','5')])
   `

我有一个包含多个问题的 html 页面,每个问题都需要对可能性和影响作出回应。每个问题与烧瓶形式一起放在一个表格中。例如:

表格1:

  1. 问题栏:我要买冰淇淋
  2. 似然列:似然瓶形
  3. 冲击柱:冲击瓶形式

表 2:

  1. 问题专栏:我想买防晒霜
  2. 似然列:似然瓶形
  3. 冲击柱:冲击瓶形式

但是,当我提交表单时,它只会将第一个结果输入我的数据库。这是应该提交表单的页面路径:

`@projects.route("/project/<int:project_id>/concept", methods=['GET', 'POST'])
@login_required
def concept(project_id):
    form = TestForm()
    project = Project.query.get_or_404(project_id)
    if form.validate_on_submit():
            test = Testresponse(form.likelihood.data, impact=form.impact.data)         
            db.session.add(test)
            db.session.commit()
            flash('Your data has been processed', 'success')
            return redirect(url_for('projects.concept', project_id=project_id))
    return render_template('create_concept.html', title='concept',
                           form=form, legend='project', project=project,project_id=project_id)`

数据库表称为 Testresponse。我不知何故需要编写代码,指定提交按钮应将所有问题的数据发送到数据库,而不仅仅是第一个问题。可能是这样的:对于每个表,取 form.likelihood.data 和 form.impact.data。

我有点卡住了,因为我不知道如何为 html 表创建这样的循环。有人可以帮助我,或者提供一个替代的想法吗?

标签: pythonhtmlflaskflask-sqlalchemy

解决方案


推荐阅读