在数据库中存储烧瓶 selectmultifield

Storing flask selectmultifield in DB

我的form.py是这样的:

class QuestionForm(FlaskForm):
    ...
    choices = SelectMultipleField('answer', choices=[('nv', 'Nevada'), ('cl','California'),('la','Los Angeles'], validators=[DataRequired()]) 
    ...
    submit = SubmitField('submit')

为了让它更漂亮,我尝试制作一个下拉菜单供选择,我的index.html如下:

{% extends "base.html" %}


{% block app_content %}
    <h1>Hi, {{ current_user.username }}!</h1>
    ...
    <form action="", method="post">
      {{ form.hidden_tag() }}
      ...
      {{ form.choices.label }} <br>

        <div class="row"> 
          <select class="selectpicker" multiple data-live-search="true" data-actions-box="true">
            {% for values in form.choices %}
            <p> {{ values }}</p>
            {% endfor %}
          </select>
        </div> 
      </p>
      <p>
        {{ form.submit() }}
      </p>
    </form>

{% endblock %}
...

问题是我不知道如何将选项传递给我在 Flask 中的路线。目前我的route.py是这样的:

def myroute():
    form = QuestionForm()
    if form.validate_on_submit():
        ...
        choices=list(filter(None, request.form.getlist('choices')))
        for item in choices:
            choice = Choices(choice=item, ...)
            db.session.add(choice)
            db.session.commit()
       ...

您需要为 select 字段设置名称。 将您的 index.html 更改为:

<select class="selectpicker" name='choices' multiple data-live-search="true" data-actions-box="true">
{% for values in form.choices %}
{{ values }} 
{% endfor %}