この記事は随時更新していきます。
WTFormsで動的なSelectField
例えば下記のようなクラスになっていて、データベース上にあるresourceのidとnameを取得してきて、idをフォームの値とし、nameを選択肢として出したい。
from flask_wtf import FlaskForm from wtforms import SelectField class SampleForm(FlaskForm): resource_id = SelectField( "Resource", coerce=int ) submit = SubmitField("送信")
この場合、view側としては次のようにすれば、データベースから取得したものをフォームの選択肢として並べることができる。(flaskでのresourceのモデルはResourcesクラスで定義しているものとする)
@app.route("/", methods=["GET", "POST"]) def index(): form = SampleForm() form.resource_id.choices = [ (r.id, r.name) for r in Resources.query.all() ]