ODOO13 如何在Many2one字段选择控件上进行多条件搜索

本文实际上是对 _name_search 方法的应用。本文以在Many2one图书借阅人字段上,输入借阅人姓名或借阅人手机号码来搜索借阅人举例说明使用方法。

假如我们有这样的需求:有读者(默认读者信息已存在数据库中)前来借阅,图书管理员需要登记借阅信息,在登记信息,选择借阅人时,管理员希望既能通过借阅人姓名,还能通过借阅人手机号,快速检索到借阅人。毕竟现在的人给孩子取名都挺捞的,张梓曦,张梓兮,张梓汐,张子兮,张子汐,王浩辰,王浩宸,王皓宸,王皓辰。管理员表示:我特么心态崩了,我特么裂开了,我特么知道哪个是你?赶紧给我整个手机号搜索吧。

ODOO13 如何在Many2one字段选择控件上进行多条件搜索_第1张图片

 行,那咱就重写_name_search 方法吧。

class ResPartner(models.Model):
    _inherit = 'res.partner'

    name = fields.Char(string="Name")
    phone = fields.Char(string="Phone")
   
    @api.model
    def _name_search(self, name='', args=None, operator='ilike', limit=100, name_get_uid=None):
        if args is None:
            args = []
        domain = args + ["|",('phone', operator, name),('name', operator, name)]
        ids = self._search(domain, limit=limit, access_rights_uid=name_get_uid)
        return models.lazy_name_get(self.browse(ids).with_user(name_get_uid))

倒数第二行,为domain 增加手机号筛选即可 

ODOO13 如何在Many2one字段选择控件上进行多条件搜索_第2张图片

文中上述方法,适合在Many2one的字段控件上,进行多条件搜索,搜索视图中的多条件搜索请请移步 ODOO 域(条件)表达式 domain、force_domain及filter_domain 的应用场景及应用方式 

你可能感兴趣的:(ODOO13)