“对记录集的操作”的版本间的差异
来自Odoo大V社-odoo中文开发手册
1360857908(讨论 | 贡献) (创建页面,内容为“记录集支持对它们进行额外的操作。我们可以检查a记录是否被包含在一个记录集中。如果x是一个单例记录集和myrecordset是一...”) |
|||
第33行: | 第33行: | ||
res.partner(8, 7) | res.partner(8, 7) | ||
</nowiki> | </nowiki> | ||
+ | |||
+ | 上一节:[[使用时间和日期]] 下一节:[[操作记录集]] |
2017年12月26日 (二) 00:44的最新版本
记录集支持对它们进行额外的操作。我们可以检查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)