对记录集的操作

来自Odoo大V社-odoo中文开发手册
1360857908讨论 | 贡献2017年5月28日 (日) 23:03的版本 (创建页面,内容为“记录集支持对它们进行额外的操作。我们可以检查a记录是否被包含在一个记录集中。如果x是一个单例记录集和myrecordset是一...”)

(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转至: 导航搜索

记录集支持对它们进行额外的操作。我们可以检查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)