在数据库中存储烧瓶 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 %}
我的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 %}