ヒスねこTechBlog

日々の気になる技術をまとめてます。

Flask小技メモ

この記事は随時更新していきます。

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()
    ]

参考: WTF SelectField with dynamic choice · GitHub