不是动态选择字段WTFORMS的有效选择

我目前正在使用WTFORMS创建一个动态选择字段,但是它从未提交,并且通过以下错误使验证失败。

Not a valid choice

我的字段是这样创建的:

area = SelectField()

在视图中,我从数据库中获取选项,如下所示:

form = MytestForm()

form.area.choices = [(a.id, a.name) for a in Area.objects.all()]

但是,如果我创建静态选项,它将起作用。

回答:

我的猜测是,Area.idint-当数据从它被视为一个客户端回来的字符串由WTForms除非调用传递给coerce了的关键字参数wtforms.fields.SelectField的构造函数:

area = SelectField(coerce=int)

或者,如果你使用的是SQLAlchemy,则可以使用wtforms.ext.sqlalchemy.fields.QuerySelectField(wtforms_sqlalchemy如果你使用的是WTForms 3+):

area = QuerySelectField(query_factory=Area.objects.all,

get_pk=lambda a: a.id,

get_label=lambda a: a.name)

以上是 不是动态选择字段WTFORMS的有效选择 的全部内容, 来源链接: utcz.com/qa/415786.html

回到顶部