本帖最后由 施程浩 于 2018-5-25 14:41 编辑
记录集是可迭代的,因此普通的Python工具都可以用来转换(map(),sorted(),ifilter(),...),其返回一个list或者是一个迭代器。
filtered()
返回一个仅包含满足谓词条件的记录集。这个谓词也可以是一个过滤字符串,其返回true或false: # only keep records whose company is the current user's records.filtered(lambda r: r.company_id == user.company_id) # only keep records whose partner is a company records.filtered("partner_id.is_company") sorted()
返回一个排序过的记录集,排序根据关键字函数(key function)进行。如果没有提供key,将使用模型的默认排序: # sort records by name records.sorted(key=lambda r: r.name) mapped()
使用提供的函数对记录集的每个记录进行计算,如果结果是记录集,则返回这个记录集: # returns a list of summing two fields for each record in the set records.mapped(lambda r: r.field1 + r.field2) 提供的函数也可以是一个字符串,用来获取字段的值: # returns a list of names records.mapped('name') # returns a recordset of partners record.mapped('partner_id')------------------------返回一个记录集 # returns the union of all partner banks, with duplicates removed record.mapped('partner_id.bank_ids')
|