【发布时间】:2016-09-01 11:26:01
【问题描述】:
我有一个合作伙伴记录集。现在我想通过两个属性来排序这个记录集。其中一个属性是简单的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 函数弄乱了第一个函数的结果。
谁能帮帮我,好吗?
【问题讨论】:
标签: python python-2.7 odoo-8 odoo