文档章节

odoo 中实现多列搜索

Fly_f
 Fly_f
发布于 2016/03/18 11:43
字数 346
阅读 123
收藏 1

odoo 中很多many2one字段很多都有需求要显示 name+description的。

类:

class 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=False)
    applicant= fields.Char('Contact')
    description= fields.Text('Description')
    project_name=fields.Char('Project Name', select=True, copy=False)
    customer = fields.Many2one('res.partner','Customer',required=True, domain=[('customer', '=', True)])


另一个类中有一个字段many2one 

vp_project = fields.Many2one('vp.project', string='VP Project',  states=READONLY_STATES, required=True, track_visibility='always')


在视图中当对字段vp_project进行下拉选择的时候一般时候只会显示name。 即 vp.project 里面的name

有些需求就是要下拉选择的时候能看的project_name. 因为这个vp number只是一个编号不能确定是不是所选的。

要想实现这个功能就要在类 vp_project 里面添加方法

  @api.multi
    @api.depends('name', 'project_name')
    def name_get(self):
        return [(r.id, (r.name +'(' + (r.project_name or _('Default'))+')' )) for r in self]

 下拉选择效果, 就会把project_name 字段也会显示出来

  

要实现输入project name 能搜索到想要的字段只有这样还不可以。 比如现在输入SW 第一个project不会被过滤出来。 

要想实现多列搜索 得在类中再添加一个方法:

  @api.model
    def name_search(self, name='', args=None, operator='ilike', limit=100):
        args = args or []
        domain = []
        if name:
            domain = ['|', ('name', operator, name), ('project_name', operator, name)]
        pos = self.search(domain + args, limit=limit)
        return pos.name_get()

这样输入project name 就可以把搜索到想要的记录了


© 著作权归作者所有

共有 人打赏支持
上一篇: Django 源码阅读
下一篇: KNN 近邻算法
Fly_f

Fly_f

粉丝 19
博文 56
码字总数 18779
作品 0
松江
程序员
私信 提问
Odoo 微信小程序商城模块 Oejia_weshop v0.1.1 发布

概述 oejia_weshop 是 Odoo 对接微信小程序实现的商城应用。 如果您使用odoo的销售模块,而想要在微信小程序上实现自己的商城卖odoo里的商品,装上 oejia_weshop 模块即可。 如果您想要搭建一...

软践
2018/09/26
1K
1
微信模块 Oejia_wx v0.5.3 发布,支持聊天图片及语音

Oejia_wx v0.5.3 发布了。Odoo 的微信模块,提供了对微信公众号和企业号(企业微信)的接入与管理,实现了微信消息与Odoo聊天的无缝对接。 v0.5.3 增加公众号用户搜索和查找功能 odoo 聊天支...

软践
2018/07/06
1K
3
微信小程序商城模块 Oejia_weshop v0.1 发布

oejia_weshop 是 Odoo 对接微信小程序实现的商城应用。 如果您使用odoo的销售模块,而想要在微信小程序上实现自己的商城卖odoo里的商品,装上 oejia_weshop 模块即可。 如果您想要搭建一套进...

软践
2018/09/14
1K
1
Jone.x/oejia_weshop

oejia_weshop Odoo 微信小程序商城模块 oejia_weshop 是 Odoo 对接微信小程序实现的商城应用。 如果您使用odoo的销售模块,而想要在微信小程序上实现自己的商城卖odoo里的商品,装上 oejia_...

Jone.x
2018/09/13
0
0
Odoo 微信小程序商城模块 - Oejia_WeShop

概述 oejiaweshop 是 Odoo 对接微信小程序实现的商城应用。 如果您使用odoo的销售模块,而想要在微信小程序上实现自己的商城卖odoo里的商品,装上 oejiaweshop 模块即可。 如果您想要搭建一套...

软践
2018/09/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Scala学习(一)

学习Spark之前需要学习Scala。 参考学习的书籍:快学Scala

柠檬果过
24分钟前
0
0
了解Nginx

1. 安装Nginx 版本 nginx-1.14.0 如果想学习Java工程化、高性能及分布式、深入浅出。微服务、Spring,MyBatis,Netty源码分析的朋友可以加我的Java高级交流:854630135,群里有阿里大牛直播讲...

编程SHA
38分钟前
0
0
虚拟化 - KVM 和 Xen 比较

Linux虚拟化技术的用户目前有两种免费的开源管理程序可以选择:Xen和KVM。 作为较早出现的虚拟化技术,Xen是“第一类”运行在裸机上的虚拟化管理程序(Hypervisor),也是当前相当一部分商业...

临江仙卜算子
57分钟前
1
0
给windows server中的“未识别的网络”或“无法识别的网络”设置网络位置类型

在windows server中,如果网络没有被正确的识别,那么就需要手工设置一下网络位置类型。 将“公用网络”指定设置为“专用网络“ 【控制面板】--【系统和安全】--【管理工具】--【本地安全策略...

gugudu
今天
2
0
阿里强制要求的21条Java开发规范,可以避免很多坑

1. 【强制】避免通过一个类的对象引用访问此类的静态变量或静态方法,无谓增加编译器解析成本,直接用类名来访问即可。 2. 【强制】所有的覆写方法,必须加@Override注解。 说明:getObject...

天王盖地虎626
今天
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部