SelectField
WTFormsのメソッドが次の形式のcan引数を取ることを理解しchoices
ています...
choices=[("value1", "display of value 1"), ("value2", "display of value 2")]
データベースへの呼び出しに基づいて選択肢を入力する必要があります。バックエンドとしてneo4jを使用しているため、モデルフォームやその他の組み込みソリューションを使用してデータをフォームに入力することはできません。
def get_list_of_things():
query = 'start n = node:things("*:*") return ID(n), n.display_name;'
t = cypher.execute(cdb, query)[0]
for x in t:
x[0] = str(x[0])
x[1] = str(x[1])
things = list(tuple(x) for x in t)
return things
class SelectAThing(Form):
thingID = SelectField('Thing name', choices=get_list_of_things())
choices = get_list_of_things()を実行すると、有効な選択肢のリストが生成されます。これは基本的に機能します。
ただし、データベースが更新してもリストが更新されていないようで、後でそのフォームに戻ります。dbに追加して戻ると、最初のリストが表示されます。