name get方法
name_get方法在odoo中用于获取模型的显示名称,当在form窗口中打开一个model时,会被调用,返回值为一个包含id和名称的元组组成的列表。
1 |
|
调用返回的结果:
name_search方法
name search方法接受4个参数:
- name: 被搜索的关键字
- args: 限定条件domain
- operator: 操作符,可选的参数有:=,!=,>,>=,<,<=,like,ilike,in,not in,child_of,parent_left,parent_right
- limite: 搜索结果的条数。
name search在Many2*类型的模型上显示时被调用,返回结果是由id和repr的文本组成的元素列表。
从结果上看,name_search方法并没有返回一个带文本的列表,而是一个延迟计算的函数,这是因为,在原生name_search方法中调用了lazy_name_get方法导致的,从这里也可以看出name_search和name_get方法的关系,即,由name_search方法限制条件过滤,然后再把结果传给name_get方法进行显示。
低阶_name_search方法
其实在更底层的层面上,还有一个_name_search方法,与name_search方法不同的是_name_search方法接受额外的一个参数:name_get_uid,这个参数的作用是指定一个调用_search和lazy_name_get方法的用户ID,用来解决当前用户权限不足的问题。
比如当前我有一个模型osc.person,没有任何一个组有权限访问,正常访问会试如下的界面:
当我们给_name_search方法传一个uid=1进去的时候:
1 |
|
就可以正常显示了。