Common ORM methods
search()
根据search domain,返回匹配记录的记录集。可以返回匹配记录的子集(offset 和 limit 参数)并进行排序(order 参数):
>>> # searches the current model
>>> self.search([('is_company', '=', True), ('customer', '=', True)])
res.partner(7, 18, 12, 14, 17, 19, 8, 31, 26, 16, 13, 20, 30, 22, 29, 15, 23, 28, 74)
>>> self.search([('is_company', '=', True)], limit=1).name
'Agrolait'
要检查是否有任何记录与域匹配,或者计算记录的数量
请使用 search_count()
create()
根据字段值的字典或存储字典的列表,返回所创建的记录集:
>>> self.create({'name': "Joe"})
res.partner(78)
>>> self.create([{'name': "Jack"}, {'name': "William"}, {'name': "Averell"}])
res.partner(79, 80, 81)
write()
将字段值写入其记录集中的所有记录。不返回任何结果。
self.write({'name': "Newer Name"})
browse()
根据id或者ids在数据库中查找并返回一个记录集,当从外部Odoo获取记录ID时(例如,通过外部系统往返)或在旧API中调用方法时有用:
>>> self.browse([7, 18, 12])
res.partner(7, 18, 12)
exists()
返回仅包含数据库中存在的记录的新记录集。可用于检查记录(例如从外部获得)是否仍然存在:
if not record.exists():
raise Exception("The record has been deleted")
或者在调用可能删除了一些记录的方法之后:
records.may_remove_some()
# 只保留未删除的记录
records = records.exists()
ref()
环境方法返回与提供的外部id匹配的记录:
>>> env.ref('base.group_public')
res.groups(2)
ensure_one()
检查记录集是否为单例(仅包含单个记录),否则会引发错误:
records.ensure_one()
# 相当于但更清晰:
assert len(records) == 1, "Expected singleton"