python - validators - wtforms fileallowed
No es una opción válida para el campo de selección dinámica WTFORMS (2)
Actualmente estoy creando un campo de selección dinámica usando WTFORMS, sin embargo, nunca envía y falla la validación con el siguiente error.
Not a valid choice
Mi campo se crea así:
area = SelectField()
y en la vista, estoy agarrando las opciones del DB así:
form = MytestForm()
form.area.choices = [(a.id, a.name) for a in Area.objects.all()]
Sin embargo, funciona si creo opciones estáticas.
Aquí es cómo puedes resolverlo sin QuerySelectField.
Así es como lo hice:
years = [(str(y), y) for y in reversed(range(1950, 2013))]
years.insert(0, ('''',''year''))
year = wt.SelectField(choices=years)
Mi suposición es que Area.id
es un int
: cuando los datos vuelven del cliente WTForms los trata como una cadena, a menos que se pase un invocable al argumento de la palabra clave wtforms.fields.SelectField
constructor wtforms.fields.SelectField
:
area = SelectField(coerce=int)
Alternativamente, si está utilizando SQLAlchemy, puede usar wtforms.ext.sqlalchemy.fields.QuerySelectField
( wtforms_sqlalchemy
si está utilizando WTForms 3+):
area = QuerySelectField(query_factory=Area.objects.all,
get_pk=lambda a: a.id,
get_label=lambda a: a.name)