私はFlaskFormsでWTFormsにuserID変数を渡そうとしています。最初に、うまく動作するコードを表示し、次に変更する必要があるコードを表示します(これは私には分かりません)。私はいくつかのグループに関連付けられた新しい名前を追加しています。動的選択WTForms Flask SelectField
FlaskFormモデル:
class AddName(FlaskForm):
name =StringField('Device name', validators=[InputRequired(),Length(min=4, max=30)])
groupID = SelectField('Payload Type', choices=[(1,"Group1"),(2,"Group2")], validators=[InputRequired])
ビューモデル:
@app.route('/dashboard/addname', methods=['GET', 'POST'])
def addname():
form=AddName()
if form.validate_on_submit():
name=Name(form.name.data,form.groupID.data)
db.session.add(name)
db.session.commit()
return "New name added"
テンプレート:
<form method="POST" action="/dashboard/addname">
<h2>Add name</h2>
{{ form.hidden_tag() }}
{{ wtf.form_field(form.name) }}
{{ wtf.form_field(form.groupID) }}
<button type="submit">Add name</button>
</form>
私が見コドロップダウンリストを作成し、submitを押すと正しい番号が返されます。
タスク:に基づいて別のリストをに渡す必要があります。 マイフラスコビューがあるので、私は、DBからテーブルからクエリを行うことによって、SQLAlchemyのを使用してリストを形成しています:
@app.route('/dashboard/addname', methods=['GET', 'POST'])
def addname():
available_groups=db.session.query(Groups).filter(Groups.userID == currend_user.userID).all()
#Now forming the list of tuples, so it's ok for SelectField
groups_list=[(i.groupID, i.groupName) for i in available_groups]
form=AddName()
if form.validate_on_submit():
name=Name(form.name.data,form.groupID.data)
db.session.add(name)
db.session.commit()
return "New name added"
- どのように私は、フォームに自分のgroups_listを渡すことができますか?私はFlaskFormモデルに形成する手順を実装しようとしたが、それはCURRENT_USERオブジェクト
- を見ていない私は戻ってint型に私はタプルのようなSelectFieldにそれを渡す必要があるときに文字列にグループIDを変換する必要があるとか?