WTF:PARAMETRIC动态形式?

时间:2016-08-07 20:41:28

标签: python forms dynamic flask wtforms

我知道如何制作?动态表格?来自文档:

http://wtforms.simplecodes.com/docs/1.0.2/specific_problems.html#dynamic-form-composition

我需要的是能够创建动态参数化表单,我的意思是什么? 这是场景,我有两个数据库表:

table Category and table SubCategory.
every Category may have different number of SubCategories

基于category_id,我必须提取所有子类别(其中每个项目都是生成表单的1行)。子类别不能编辑,它们仅用于显示,sub_category_id必须是表格的一部分(即作为数据提交)。

表格:

Category name
   SubCategory1   : [ .... ]   <== text field for quantity
   SubCategory2   : [ .... ]   <== text field for quantity
   SubCategory3   : [ .... ] 
   .......
   SubCategoryN   : [ .... ] 

再次,category_id是决定表单创建的参数,即category_id是我在其上进行数据库查询的参数,提取所有子类别并为每个子类别构建一个FORM字段。 一个项目看起来像(伪代码):

{{subat.name}} <input id={{subcat.id}}> quantity </input>

我该怎么做?

我想我有一些使用BaseForm的解决方案。当我觉得它有效时会发布它。但是不要让你阻止你打印其他解决方案。

这是简化版。到目前为止似乎有效。 (尚未测试表格提交)。

def build_form(self, id):
    items = db.session.query(Blah).filter_by(id=id)
    fields = {}
    data = {}
    for it in items :
        field = StringField(render_kw={ 'xname' : it.name })
        fields[name] = field
        data[name] = ""
    form = BaseForm(fields)
    form.process(obj=data)
    return form

重要的是你必须用epmty数据项调用.process(),否则一切都会崩溃。 :),花了我一段时间才弄明白。

hth ..如果你有更好的解决方案,请不要犹豫发布。

0 个答案:

没有答案