Flask:你如何通过总和访问组并在jinja2中计数?

时间:2017-10-25 16:10:52

标签: python flask flask-sqlalchemy

我正在尝试获取查询的值:

total_sales =  (Model.query
                .with_entities(Model.dept_name,
                               sa.func.sum(Model.sales),
                               sa.func.count(Model.sales))
                .filter(Model.companyid == companyid)
                .filter(Model.sales> 0)
                .group_by(Model.companyid, Model.dept_name)
                .all())

在我的jinja代码中,我有:

{% for item in total_sales %}
             <tr>
                <td>{{ item.dept_name}}</td>
            </tr>
            <tr>
                <td>{{ item.sum }}</td>
            </tr>
            <tr>
                <td>{{ item.count }}</td>
            </tr>
        {% endfor %}

dept_name显示但item.sum未显示,item.count显示为<built-in method count of result object at 0x000002DEA910D098>

如果我print(total_sales)我可以将查询结果视为元组列表。如何在我的jinja文件中访问它?

1 个答案:

答案 0 :(得分:4)

您需要在功能结果中添加标签,以便更清楚地访问它们。由于您在模板中使用countsum,因此它会像:

sa.func.sum(Model.sales).label('sum'),
sa.func.count(Model.sales).label('count')