1

我正在开发一个 Flask 应用程序来进行一些事件调度。我在表单中遇到了 WTForms QuerySelectMultipleField 的问题。

表格.py

class EnterEvent(Form):
...
invitees = QuerySelectMultipleField('Invitees', query_factory=lambda:
                            models.User.query.order_by(models.User.name).all())

在我解析表单 POST 数据的初始化.py 文件中。只是为了测试我试图返回 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 数据,看起来当我选择多个对象时,它发送的对象不止一个。

我似乎无法弄清楚这一点。任何帮助将不胜感激!

4

1 回答 1

1

如果您form直接查询您的对象,您将获得您的 ORM 模型实例,而不是作为请求对象一部分的“原始”表单数据

假设您使用 Flask-WTF 和它的小助手构建它,那么您的invitees行应该真的是invitees = form.invitees.data.

于 2013-07-07T16:21:05.953 回答