WTForms/Flask:动态最小输入

2024-06-01 00:21:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我希望动态使用min_entries WTForms参数,即不使用硬编码数字。在

它看起来像这样表单.py公司名称:

class TestSpecForm(FlaskForm): 
    student_number = IntegerField('Number of Students')


class StudentForm(FlaskForm):
    answer = StringField('')


class TestInputForm(FlaskForm):
    students = FieldList(FormField(StudentForm))  # I'd like to insert the dynamic min_entries here
    submit = SubmitField('Submit')

像这样的东西视图.py公司名称:

^{pr2}$

但是,这不起作用,只是没有为TestInputForm呈现字段。如果我在TestInputForm的students变量中输入“min_entries=10”,那么一切都按预期工作。但我不能动态完成。在

谁能帮帮我吗?根据我所有的google/reddit/SO搜索,这基本上就是WTForms中大多数参数或验证器的动态设置方式。在

谢谢你


Tags: py名称编码参数公司动态数字min
1条回答
网友
1楼 · 发布于 2024-06-01 00:21:01

不可能动态重写FieldList上的min_entries。在

解决方法是将窗体子类化并用所需的值绑定一个新的FieldList。在

所以你的代码应该是这样的:

def input(key_id):
    key = Testspecs.query.get_or_404(key_id) 
    student_number = key.student_number
    # Subclass form and bind new field
    class LocalForm(TestInputForm):pass
    LocalForm.students = FieldList(FormField(StudentForm), min_entries=student_number)
    # Use our new form
    form = LocalForm()
    if form.validate_on_submit():
        ...

相关问题 更多 >