我对我认为这是一件非常愚蠢的事情感到疯狂。 我需要按字母顺序渲染数组的结果:
<tr t-foreach="o.order_line" t-as="l">
<td>
<span t-field="l.name"/>
</td>
我应该使用SQL查询SELECT * FROM table ORDER BY
l.name DESC
吗?
但它接缝太复杂,我觉得有一个简单的条件来正确渲染它......
任何帮助高度赞赏!谢谢!
答案 0 :(得分:2)
答案 1 :(得分: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>
答案 2 :(得分:1)
实际上你不能使用“.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
使用here上查看更多示例。
答案 3 :(得分: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">