1

我为我认为这是一件非常愚蠢的事情而疯狂。我需要按字母顺序呈现数组的结果:

 <tr t-foreach="o.order_line" t-as="l"> 
                    <td>
                       <span t-field="l.name"/>
                    </td>

我应该使用 SQL 查询SELECT * FROM table ORDER BYl.nameDESC吗?但它的接缝太复杂了,我觉得有一个简单的条件可以正确渲染它......

任何帮助高度赞赏!谢谢!

4

4 回答 4

2

sorted正如@Alessandro Ruffolo 所写,我刚刚遇到了这个问题,并且能够通过功能解决它。您必须将正确的参数传递给该函数,在您的情况下,它将是:

<tr t-foreach="o.order_line.sorted(key=lambda r: r.name, reverse=True)" t-as="l"> 
    <td>
        <span t-field="l.name"/>
    </td>
    ...
</tr>
于 2016-09-06T10:20:31.670 回答
2

看看这个

您可以为order_line.sorted()设置一个新变量,然后迭代新变量

对于排序,请查看Odoo 参考

于 2016-02-18T08:36:57.863 回答
1

实际上你不能使用“.sort()”有一个主要原因:

  • 列表上的“.sort()”对列表进行就地排序,返回None

您可以做的最好的事情是使用sorted,它不会修改您传递给它的可迭代对象,而是返回其排序值。像这样:

 <tr t-foreach="sorted(o.order_line, key=lambda x: x.get('A_FIELD_TO_SORT_UPON')" t-as="l"> 

key可以是任何返回用于排序的值的函数。

在此处查看更多sorted使用示例。

于 2016-02-18T11:31:01.600 回答
0

如果您想在 Odoo 报告中对项目进行排序,这将起作用!!!

<tr t-foreach="get_room_used_detail(data['form']['date_start'],data['form']['date_end']).sorted(key=lambda x: x.checkin)" t-as="info">
于 2018-05-25T08:49:02.180 回答