如何在Flask中显示每个实体的多个表单?

时间:2017-02-24 14:18:03

标签: python flask jinja2 wtforms

我面临一个逻辑问题: 假设我有一个类foo,foo_linked_object_1和foo_linked_object_2。关系是:

  • foo 1 ------ m foo_linked_object_1
  • foo 1 ------ m foo_linked_object_2

我要做的是拥有一个视图,显示关于某些foo对象的所有信息(到目前为止一直很好),并且在每个foo下面,有两个表单允许我创建一个foo_linked_object_1或foo_linked_object_2。

我尝试过以下解决方案:

forms.py

CreateFLO1(Form):
    #FLO fields ...

CreateFLO2(Form):
    #FLO2 fields ...

controller.py

@app.route('/foo/<param>')
def foo_per_param(param):
    foos = Foo.query.filter_by(param=param)
    for foo in foos:
        foo.FLO1Form = CreateFLO1()
        foo.FLO2Form = CreateFLO2()
    return render_template('foo.html', foos=foos)

foo.html

{% for foo in foos %}
    {{ foo.infos }} <! -- etc etc -->
    {{ foo.FLO1Form.field1 }}
    {{ foo.FLO1Form.field2 }} <! -- etc etc, same for FLO2Form -->

Jinja给我发出以下错误:

  

UndefinedError:app.models.foo.Foo对象没有属性'FLO1Form'

有谁知道如何将这些表格与每个实体联系起来?

1 个答案:

答案 0 :(得分:0)

根据Metmirr的说法:

我没有得到正确的信息。

Entity.query.filter_by(param=param) 

返回查询对象,而

Entity.query.filter_by(param=param).all()

返回结果集。谢谢!