- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
odoo 中实现多列搜索
odoo 中实现多列搜索
odoo 中很多 many2one 字段很多都有需求要显示 name+description 的。
类:
1class
2
3
4
5
6
7
8lse) 9
1
0
1e) 1
vp_project(models.Model):
_name=vp.project
_inherit
=
[mail.thread,
ir.needaction_mixin]
_discription=VP
project
name=fields.Char(VP
NO.,
required=True,select=True,
copy=Fa
applicant=
description=
fields.Char(Contact)
fields.Text(Description)
project_name=fields.Char(Project
Name,
select=True,
copy=Fals
customer
=
fields.Many2one(res.partner,Customer,required=Tru
e, domain=[(customer, =, True)])
另一个类中有一个字段 many2one1vp_project
另一个类中有一个字段 many2one
1vp_project = fields.Many2one(vp.project, string=VP Project,
sta
tes=READONLY_STATES, required=True, track_visibility=always)
在视图中当对字段 vp_project 进行下拉选择的时候一般时候只会显示 name 。 即 vp.project 里面的 name
有些需求就是要下拉选择的时候能看的 project_name. 因为这个 vp number 只是一个编号不能确定是不是所选的。
要想实现这个功能就要在类 vp_project 里面添加方法
1
2
3
4
@api.multi
@api.depends(name, project_name)
def
name_get(self):
return
[(r.id,
(r.name
self]
+(
+ (r.project_name or _(
Default))+)
))
for
r
in
下拉选择效果 , 就会把 project_name 字段也会显示出来
要实现输入
要实现输入 project name 能搜索到想要的字段只有这样还不可以。
比如现在输入 SW 第一个 project 不会被
过滤出来。
要想实现多列搜索 得在类中再添加一个方法:
1
2
@api.model
def
name_search(self,
name=, args=None, operator=ilike, l
3imit=100):
4
5
6
7
8roject_name,
args
= args or []
domain
=
[]
if
name:
domain
=
[|,
(name, operator, name), (p
operator,
name)]
pos =
self.search(domain
pos.name_get()
+ args, limit=limit)
return
这样输入 project name 就可以把搜索到想要的记录了
文档评论(0)