我正在尝试在WTForms中生成一个表单,该表单根据此文档具有动态字段http://wtforms.simplecodes.com/docs/1.0.2/specific_problems.html#dynamic-form-composition
我有一个子窗体类,允许用户从列表中选择要购买的项目:
class Item(Form):
itmid = SelectField('Item ID')
qty = IntegerField('Quantity')
class F(Form):
pass
将有多个购物项目类别,因此我希望根据用户将选择的类别生成一个动态选择字段:
fld = FieldList(FormField(Item))
fld.append_entry()
但我得到了以下错误:
AttributeError: 'UnboundField' object has no attribute 'append_entry'
我是做错了什么,还是没有办法用WTForms来完成?
没有写完整的代码或测试代码,但它可能会给你一些想法。此外,这可能只会有助于填写所需的数据。
您需要填写
choices
,以便SelectField
能够看到数据并能够选择它。你在哪儿装的?初始填充应该在表单定义中,但是如果您喜欢动态填充,我建议您在创建此表单以便向用户显示的位置对其进行修改。就像在视图中执行一些form = YourForm()
,然后将其传递给模板。如何用选项填充表单的选择字段?你必须有元组列表,然后像这样:
categories
这里必须是字典,包含您的类别,格式类似于{1:'One', 2:'Two',...}
因此,如果在定义表单时将某些内容分配给选项,则表单将从一开始就具有该数据,并且在需要具有用户类别的位置,只需在视图中覆盖它。
希望这能给你一些想法,你可以继续前进:)
我对所有表单使用扩展类BaseForm,并且在类上有一个方便的append_field函数。
返回附加了字段的类,因为(表单字段的)实例不能附加字段。
我今晚碰到了这个问题,结果就这样结束了。我希望这能帮助未来的人。
往复式py
视图.py
我发现这个post也很有用
相关问题 更多 >
编程相关推荐