今天继续研究ORM的BaseModel,昨天研究了一下所有常用属性的具体用法,那么今天研究一下BaseModel中一些常用的方法,我们学会它们并灵活的应用它们,可以为我们开发解决很多的问题。
@api.model_create_multi
@api.returns(‘self‘, lambda value: value.id)
def create(self, vals_list):
# vals_list是一个列表数据,循环根据列表数据的内容创建数据,返回数据对象。
"""
....
"""
重写create方法可以实现我们想要的在创建前后做一些自己想要做的工作。
def unlink(self):
# self是需要删除数据的对象。
"""
....
"""
重写unlink的方法,可以在删除数据的前后可以做一些自己的工作。
def write(self, vals):
# self是需要修改数据的对象。
# vals是一个字典数据,key是需要修改的字段的名称,value是修改之后的值。
"""
....
"""
重写write的方法可以实现在对指定数据字段修改的时候的前后做出自己的动作。
@api.model
@api.returns(‘self‘,
upgrade=lambda self, value, args, offset=0, limit=None, order=None, count=False: value if count else self.browse(value),
downgrade=lambda self, value, args, offset=0, limit=None, order=None, count=False: value if count else value.ids)
def search(self, args, offset=0, limit=None, order=None, count=False):
# agrs, 其实就是domain过滤条件。
# offset, 分页数据,多少号数据开始。
# limit, 数量量,offset和limit一起可以用来数据分页操作。
# count, 如果count=True,只会返回search到的数据的数量。
"""
....
"""
重写search()方法可以做到自由的在查询的时候做一些自己的操作。
一个帮助odoo实现数据查询的家族
这个家族主要成员(常用的方法)
browse(self, ids=None)
search(self, args, offset=0, limit=None, order=None, count=False)
search_count(self, args)
name_search(self, name=‘‘, args=None, operator=‘ilike‘, limit=100)
name_get(self)
read_group(self, domain, fields, groupby, offset=0, limit=None, orderby=False, lazy=True)
其他对象查询方法
read(self, fields=None, load=‘_classic_read‘)
filtered(self, func)
lambda r: not r.id
。filtered_domain(self, domain)
fields_get(self, allfields=None, attributes=None)
主要家族成员(常用方法)
create(self, vals_list)
name_create(self, name)
new(self, values={}, origin=None, ref=None)
其他create的的方法
copy(self, default=None)
update(self, values):
write(self, vals)
unlink(self)
ensure_one(self)
exists(self)
view_init(self, fields_list)
load(self, fields, data)
default_get(self, fields_list)
user_has_groups(self, groups)
load_views(self, views, options=None)
fields_view_get(self, view_id=None, view_type=‘form‘, toolbar=False, submenu=False)
get_formview_id(self, access_uid=None)
get_formview_action(self, access_uid=None)
clear_caches(cls)
with_env(self, env)
sudo(self, flag=True)
with_user(self, user)
with_context(self, *args, **kwargs):
sorted(self, key=None, reverse=False)
flush(self, fnames=None, records=None)
refresh(self):
recompute(self, fnames=None, records=None):
onchange(self, values, field_name, field_onchange)
Odoo ORM研究2 - BaseModel中的常用方法分析
原文:https://www.cnblogs.com/fandx/p/15041445.html