Dynamic select field using WTForms not updating

妖精的绣舞 提交于 2019-11-28 22:10:52

You should initialize the form choices when the form object is created:

class UserForm(Form):
    username = StringField('Username', validators=[DataRequired()])
    password = PasswordField('Password', validators=[DataRequired()])
    job = SelectField(
        'Job',
        validators=[DataRequired()]
    )

    def __init__(self, *args, **kwargs):
        super(UserForm, self).__init__(*args, **kwargs)
        self.job.choices = [(a.id, a.name) for a in Job.query.order_by(Job.name)]

Or in the view:

form = UserForm()
form.job.choices = [(a.id, a.name) for a in Job.query.order_by(Job.name)]
tyan

It's worth mention that part of the answer of @plaes is wrong

def __init__(self, *args, **kwargs):
        super(UserForm, self).__init__(*args, **kwargs)
        self.job.choices = [(a.id, a.name) for a in Job.query.order_by(Job.name)]

in the init func we should call super first .then use self.job.choices or it will not work..

see my question here flask wtforms selectfield choices not update

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!