当通过查询数据库创建对象列表时,如何在jinja模板中找到对象列表的长度?
我认为There are {{ items|length }} items in this category.
会起作用,但项目的结果是:
items = db_session.query(Item).filter_by(category_id=category.id)
我收到了错误
TypeError:“Query”类型的对象没有len()
显然,我可以单独计算长度并传入render_template()
,但我想知道是否有更好的方法?
非常感谢社区的任何帮助:)
答案 0 :(得分:1)
在jinja模板中使用{{ items | count }}
答案 1 :(得分:0)
items
对象还不是列表,它是一个未处理的Query
对象,如您在错误中看到的那样。您可以使用Query.all()
方法获取项目列表:
items = db_session.query(Item).filter_by(category_id=category.id).all()
之后length
过滤器可适用。
答案 2 :(得分:0)
尝试添加loopcontrol扩展
app.jinja_env.add_extension('jinja2.ext.loopcontrols')
然后
{% for item in items %}
{{loop.length}}
{% break %}
{% endfor %}