0
我正在Flask應用程序上做一些事件調度。我在我的表單中遇到了WTForms QuerySelectMultipleField的問題。WTForms QuerySelectMultipleField不發送列表
forms.py
class EnterEvent(Form):
...
invitees = QuerySelectMultipleField('Invitees', query_factory=lambda:
models.User.query.order_by(models.User.name).all())
,並在我的初始化 .py文件,我解析表單POST數據。爲了測試我試圖返回request.form ['invitees']來查看傳遞的內容。最終我想驗證數據並將其添加到我的SQLite3數據庫。
@app.route('/event', methods=['POST', 'GET'])
def addEvent():
form = EnterEvent()
if request.method == 'POST':
...
invitees = request.form['invitees']
return invitees
的WTForm文檔說,QuerySelectMultipleField應該返回與ORM模型實例的列表,但是當我解析POST請求,我沒有得到一個列表。我在瀏覽器中檢查了POST數據,它看起來像我選擇多個對象時發送多個對象。
我似乎無法弄清楚這一點。任何幫助將不勝感激!
謝謝!我不知道你可以從查詢表單中獲得ORM實例。我以爲你只能解析原始的POST數據。這是一個巨大的幫助。 – Ptrkcon
爲什麼不使用相同的方法從表單中獲取所有字段,而不是像request.form ['whatever']那樣獲取'原始'數據? – Ptrkcon
你總是會使用'form.field_name.data'約定,否則你實際上並沒有使用WTForms的好東西。理想情況下,你應該真的在做'if form.validate_on_submit():'而不是'if request.method =='POST',因爲前者實際上使用了你在表單數據上設置的任何wtf驗證。 – Doobeh