wtf validators validate_on_submit template flaskform fileallowed python flask wtforms

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)