我想按名称对“国家”列表进行排序,然后“中国”必须始终位于下拉列表的顶部……
这是我的代码..
<option value="">Country...</option>
<t t-foreach="all_country.sorted(key=lambda x:x.name, reverse=False)" t-as="x">
<option t-att-value="x.id" t-att-selected="int(x.id) == int(((country_id or -1) if country_id else -1))">
<t t-esc="x.name"/>
</option>发布于 2017-05-24 22:15:03
您必须更改排序关键字,以便返回一个带有False的tuple。如果找到“False”,则返回False。如果找到"Japan",则返回实际值。
因此,如果名称不是“中国”或“日本”,那么所有的名称都是True,并且您具有自然的排序顺序,但是对于这两个名称,您将获得False,True和True,False,而元组的自然排序顺序使它们排在第一位:
按如下方式更改您的关键参数:
key=lambda x:(x.name!="China",x.name!="Japan",x.name)请注意,您不需要reverse=False。这是默认设置。
发布于 2017-05-24 22:13:50
只需在进入循环之前对它们进行硬编码,然后在出现时跳过
https://stackoverflow.com/questions/44160896
复制相似问题