我有合作伙伴的记录集。现在我想通过两个属性来订购这个记录集。其中一个属性是简单的Char
,但另一个是Many2one
,这是一个问题。
示例(假设变量partners
是记录集):
partners.sorted(key=lambda r: r.name)
(Char
没问题)。partners.sorted(key=lambda r: r.country_id)
(使用Many2one
,您必须添加其他模型的属性。)partners.sorted(key=lambda r: r.country_id.id)
(现在我们已经指出了res.country
的属性,正确订购了记录集。问题是:我需要按两个字段排序,如上所述。为此,我似乎必须使用itemgetter
,但是:
partners.sorted(key=itemgetter('name', 'country_id'))
(country_id
会被忽略,就像我上面尝试按此处订购时一样。)partners.sorted(key=itemgetter('name', 'country_id.id'))
(错误消息是country_id.id
不是res.partner
的字段。)partners.sorted(key=itemgetter('name', 'phone'))
(因为这两个字段都是Char
)。我还尝试将两个排序连续排列,这样:
partners.sorted(key=lambda r: r.name).sorted(key=lambda r: r.country_id.id)
但它既不起作用,因为第二个sorted
函数会弄乱第一个{{1}}的结果。
有人可以帮帮我吗?
答案 0 :(得分:1)
我认为您需要使用country name
进行排序
使用您的上一个代码行并调用一次排序将解决问题:
partners.sorted(key=lambda r: (r.name, r.country_id.name))
答案 1 :(得分:0)
怎么样?
partners.sorted(key=lambda p: (p.name, p.country_id.id))