我有合作伙伴的记录集。现在我想通过两个属性来排序这个记录集。其中一个属性是一个简单的 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
函数弄乱了第一个的结果。任何人都可以帮我解决这个问题吗?
最佳答案
关于什么
partners.sorted(key=lambda p: (p.name, p.country_id.id))
关于python - 如何在Odoo 8中按两个字段排序?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39270278/