2016-08-18 82 views
0

的結果當通過查詢數據庫創建對象列表時,如何查找jinja模板中對象列表的長度?jinja模板中列表的長度,其中列表是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對象在錯誤看到。您可以使用Query.all()方法來獲取項目的列表:

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

length過濾器後可以適用。

+0

謝謝謝爾蓋。我沒有意識到.all()失蹤。奇怪的是,我可以如何使用未完成的查詢遍歷jinja中的對象(即使它未完成),但長度過濾器不起作用。 –

+0

@SimonOtter有可能:'Query'對象用作生成器,可以在不調用'all()'的情況下遍歷它。這個特性也可以在jinja模板中使用,所以你的循環代碼運行的很好。 –