【问题标题】:Field selected option giving invalid choices error字段选择选项给出无效选择错误
【发布时间】:2020-10-10 04:56:13
【问题描述】:

我试图选择一个产品列,该列具有从数据库表中提取的选项。我希望该用户选择该产品并在其前面更新详细信息,并且也应在 DB 中进行更新。

但是在提交表单时,它会抛出错误:

{'Product': ['Not a valid choice']}

我的验证在这里进行:

if form.validate_on_submit():
   
        sku=str(form.Product.data)
        SKU=Product.query.filter_by(Product=sku).update({Rate:f'form.Rate.data',Tax:f'form.Tax.data',Extra:f'form.Extra.data',})
        db.session.commit()
        flash(f'Data updated for {form.Product.data}!','success')
        return redirect(url_for('/'))
        print(form.errors)
    else:
        print(form.errors)
        flash(f'Data not updated for {form.Product.data}','danger')
        
    return render_template('index.html',form=form, choices=choices)

HTML 模板如下所示:

<select name="Product" id="Product">
    {% for choice in choices %}
    <OPTION name="Product" value="{{choice}}">
         {{choice}}
   </option>
    {% endfor %}
</select>

我不知道该怎么做,因为我是 Flask 和 Flask-SQLAlchemy 的新手。

任何帮助将不胜感激:)

【问题讨论】:

    标签: forms flask flask-sqlalchemy backend flask-wtforms


    【解决方案1】:

    我认为您生成的选项列表错误。尝试将列表保存在变量中,然后将其传递给您的表单。

    【讨论】:

      【解决方案2】:

      在你的表单实例化后,我认为你需要将选项的值设置为表单的属性,即,

      form.Product.choices = ['Choice 1', 'Choice 2', 'Choice 3']
      

      我认为这将解决您的“不是有效选择”错误。此外,这样您就不需要将 choices 作为单独的参数传递给您的 html 模板。当您呈现表单时,您可以简单地执行以下操作:

      {{form.Product.label}}
      {{form.Product}}
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-11-23
        • 2020-01-13
        • 2010-11-19
        • 2018-07-02
        • 2016-04-06
        • 1970-01-01
        相关资源
        最近更新 更多