1. create
记录创建方法。创建记录的orm函数。页面新建点击保存时触发调用。返回值为创建成功的记录集。需要配合装饰器api.model使用
api.model:
模型修饰器。使用该修饰器的方法,第一个参数self会去除记录集ids,只带有模型相关属性。
@api.model
def create(self, vals_list):
res = super(EnoAssetPeriod, self).create(vals_list)
return res
vals_list中为传入的数据
res为模型对象
可以通过例如self.name来获取数据
2. write
记录更新方法。修改记录的orm函数。页面编辑点击保存时触发调用。返回值为布尔值,
True修改成功,False修改失败。
def write(self, vals):
res = super(EnoAssetPeriod, self).write(vals)
return res
self为修改之前的模型
vals为修改的数据
修改成功res为True否则为False
3.unlink
记录删除方法。删除记录的orm函数。页面点击删除时触发调用。删除成功返回True
def unlink(self):
for rec in self:
if rec.asset_period_status == 'open':
raise ValidationError("不能删除打开状态")
return super(EnoAssetPeriod, self).unlink()
4.search_count方法:
记录查询统计行数方法。根据domain条件查询符合条件的记录条数,返回值为整型,条件查询结果的条数。
例如:
# 查询一个公司下的同一公司编号的数量是否大于1
self.search_count([('company_id', '=', self.company_id.id), ('asset_number', '=', self.asset_number)]) > 1
5.search方法
记录查询方法。根据domain条件返回对应记录集,符合查询条件的记录集
dep2_ids = self.search([('parent_id', '=', False)])
6.name_search方法
many2one字段点击时调用的方法
例子:编码和名称的模糊查询
@api.model
def name_search(self, name='', args=None, operator='ilike', limit=100):
"""
支持编码、名称搜索
"""
args = args or []
if name:
# args += [('code', '=', name)]
args += ['|', ('name', 'ilike', name), ('code', 'ilike', name)]
return super(EnoTestDepartment, self).name_search(name=name, args=args, operator=operator, limit=limit)
7.browse方法
使用id查询记录集方法。可以配合search使用,search查询出记录级后,通过browse方法传入id值来取出对应值。
示例代码
dep_ids = self.search([('parent_id', '=', False)]).mapped('code') # ['01','02']
self.browse(dep_ids)
8.ids方法
获取记录集中的id列表
9.mapped方法
读取记录集字段值,返回记录级的指定字段
示例代码:
dep_ids = self.search([('parent_id', '=', False)]).mapped('code')
10.filtered方法
记录集筛选。(通常后面视使用匿名函数,比如lambda a:a.data_form < a.data_to)
示例代码:
dep2_ids = self.search([('parent_id', '=', False)]). \
filtered(lambda a: a.date_from < a.date_to)
11.sorted方法
记录集排序,对记录集排序
示例代码
dep2_ids = self.search([('parent_id', '=', False)]). \
filtered(lambda a: a.date_from < a.date_to).sorted(key=lambda x: x.code or x.code, reverse=False)
12._auto_init方法
模块升级安装模型初始化方法。
13.init方法
模块升级安装模型初始化方法
14.copy方法
记录复制方法。