jinja 模板中列表的长度,其中列表是 DBSession.query 的结果

问题描述 投票:0回答:4

当通过查询数据库创建对象列表时,如何找到 jinja 模板中对象列表的长度?

我以为

There are {{ items|length }} items in this category.
会起作用,但项目是以下结果:

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

我得到了错误

类型错误:“查询”类型的对象没有 len()

显然,我可以单独计算长度并传入

render_template()
,但我想知道是否有更好的方法?

非常感谢社区的任何帮助:)

python-2.7 jinja2 flask-sqlalchemy
4个回答
3
投票

items
对象还不是列表,它是一个未处理的
Query
对象,如您在错误中看到的那样。您可以使用
Query.all()
方法来获取项目列表:

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

之后

length
过滤器就可以应用了。


2
投票

在 jinja 模板中使用

{{ items | count }}


0
投票

尝试添加循环控制扩展

app.jinja_env.add_extension('jinja2.ext.loopcontrols')

然后

{% for item in items %}
{{loop.length}}
{% break %}
{% endfor %}

0
投票

您可以将类型 oqueryset 转换为 list

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

© www.soinside.com 2019 - 2024. All rights reserved.