2013-07-06 3 views
0

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

Я не могу понять это. Любая помощь будет оценена!

ответ

0

Вы бы получить экземпляры модели ORM, если вы запрашиваете ваш form объект непосредственно, а затем «сырые» данные формы, который является частью объекта запроса

Предполагая, что вы используете колбовую WTF с его маленькими помощниками, построенных это, ваша линия invitees действительно должна читать invitees = form.invitees.data.

+0

Спасибо! Я не знал, что вы можете получить экземпляры ORM из формы запроса. Я думал, что вы можете разобрать необработанные данные POST. Это огромная помощь. – Ptrkcon

+0

Почему бы вам не использовать тот же самый метод, чтобы получить все поля из формы вместо получения «сырых» данных, таких как request.form ['whatever']? – Ptrkcon

+0

Вы всегда будете использовать соглашение 'form.field_name.data', иначе вы фактически не пользуетесь лакомствами WTForms. В идеале вы действительно должны делать 'if form.validate_on_submit():' вместо 'if request.method == 'POST'', потому что первая фактически использует любую проверку wtf, которую вы настроили на данные формы. – Doobeh

Смежные вопросы