2017-02-24 1 views
1

私は論理的な問題に直面しています: 私はクラスfoo、foo_linked_object_1とfoo_linked_object_2を持っているとしましょう。関係は以下のとおりです。Flaskにエンティティごとに複数のフォームを表示する方法は?

  • fooの1 ------メートルfoo_linked_object_1
  • fooの1 ------メートルfoo_linked_object_2

私が何をしようとしていることは持っていることですfooオブジェクトに関するすべての情報(これまでのところ良い)と、それぞれのfooの下に、foo_linked_object_1またはfoo_linked_object_2を作成するための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 --> 

神社は私返します次のエラー:

UndefinedError: app.models.foo.Foo object has no attribute 'FLO1Form'

どのように私はこれらのフォームを各エンティティにリンクさせるのですか?

+0

'foos = Foo.query.filter_by(param = param)'これは、結果セットの代わりにクエリオブジェクトを返します。それはあなたが欲しいものですか? – metmirr

+0

そうだと思います。どのように結果セットを取得する必要がありますか? @metmirr:ちょうど解決策を見つけました...私はちょうど.all()を追加する必要がありますか?少しばかだと感じる。 –

+0

'すべて()'を使用します。 'foos = Foo.query.filter_by(param = param).all()' – metmirr

答えて

0

Metmirrによると:

私は正しい情報を得ていませんでした。

Entity.query.filter_by(param=param) 

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

が結果セットを返すのに対し、クエリオブジェクトを返します。ありがとう!

関連する問題