Я работаю над флеш-приложением, чтобы выполнить какое-то планирование событий. У меня возникают проблемы с 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