Установка атрибута choices
после создания экземпляра, похоже, работает:
import wtforms
from werkzeug.datastructures import MultiDict
class AuthorForm(wtforms.Form):
author = wtforms.SelectField('author', coerce=int, default=1)
authors = [(1, 'Amy Tan'), (2, 'Michael Chabon')]
af = AuthorForm()
af.author.choices = authors
for field in af:
print(field)
af = AuthorForm(formdata=MultiDict([('author', '1')]))
af.author.choices = authors
if not af.validate():
print(af.errors)
else:
print(af.data)
Вывод:
<select id="author" name="author"><option selected value="1">Amy Tan</option><option value="2">Michael Chabon</option></select>
{'author': 1}