2016-08-18 5 views
0

データベースを照会してオブジェクトのリストを作成したときに、ジンジャーテンプレート内のオブジェクトのリストの長さを見つけるにはどうすればよいですか?DBSession.queryの結果であるジンジャーテンプレートのリストの長さ

私はThere are {{ items|length }} items in this category.が働くだろうと思ったが、項目が結果です:

items = db_session.query(Item).filter_by(category_id=category.id) 

と私は

TypeError: object of type 'Query' has no len()

明らかにエラーを取得し、私は別途長さを計算し、render_template()に渡すことができますが、私はもっ​​と良い方法があるかどうか疑問に思いましたか?

コミュニティからすべてのヘルプははるかに高く評価されるだろう:)

答えて

0

itemsオブジェクトがまだリストではありませんあなたがエラーに見るように、それは未処理のQueryオブジェクトです。適用することができるlengthフィルタ後

items = db_session.query(Item).filter_by(category_id=category.id).all() 

:あなたは、項目のリストを取得するにはQuery.all()メソッドを使用することができます。

+0

ありがとうSergey。 .all()が行方不明になっていたことに気付かなかった。奇妙なことに、未完成のクエリを使用してjinjaのオブジェクトをループすることはできますが(未完成であっても)、長さのフィルタは機能しませんでした。 –

+0

@SimonOtter可能性があります: 'Query'オブジェクトはジェネレータとして動作します。' all() 'を呼び出さずに反復処理を行うことができます。この機能はジンジャーテンプレートでも使用できるので、ループコードがうまく機能しました。 –

0

{{ items | count }}をジンジャーテンプレートで使用

関連する問題