对记录集的操作
来自Odoo大V社-odoo中文开发手册
记录集支持对它们进行额外的操作。我们可以检查a记录是否被包含在一个记录集中。如果x是一个单例记录集和myrecordset是一个记录集包含许多记录的记录集,我们可以使用它︰
x in my_recordset x not in my_recordset
以下操作也是可用的︰
recordset.ids 返回以元素IDs记录集列表 recordset.ensure_one() 检查它是否为一个单例的记录(singleton);如果它不是,有一个ValueError异常抛出 recordset.filtered(func) 返回一个经过过滤的记录集 recordset.mapped(func) 返回一个映射值的列表 recordset.sorted(func)返回一个有序的记录集
这里是这些函数的用法示例︰
>>> rs0 = self.env['res.partner'].search([]) >>> len(rs0) # how many records? 40 >>> starts_A = lambda r: r.name.startswith('A') >>> rs1 = rs0.filtered(starts_A) >>> print rs1 res.partner(8, 7, 19, 30, 3) >>> rs2 = rs1.filtered('is_company') >>> print rs2 res.partner(8, 7) >>> rs2.mapped('name') [u'Agrolait', u'ASUSTeK'] >>> rs2.mapped(lambda r: (r.id, r.name)) [(8, u'Agrolait'), (7, u'ASUSTeK')] >> rs2.sorted(key=lambda r: r.id, reverse=True) res.partner(8, 7)