Openerp 在odoo 9中使用名称搜索

Openerp 在odoo 9中使用名称搜索,openerp,odoo-9,Openerp,Odoo 9,我想使用名称搜索,但下面的示例不起作用 标签1 1234 标签2 2568 标签3 0369 在输入036之后,我想要得到标签3 class MyTags(models.Model): _name = "my.tags" _description = "Tags" name = fields.Char(required=True) color = fields.Integer(string='Color Index')

我想使用名称搜索,但下面的示例不起作用

标签1 1234

标签2 2568

标签3 0369

在输入036之后,我想要得到标签3

    class MyTags(models.Model):
        _name = "my.tags"
        _description = "Tags"

        name = fields.Char(required=True)
        color = fields.Integer(string='Color Index')


        @api.multi
        def name_get(self):
            result = []
            for record in self:
                name = '[' + str(record.color) + ']' + ' ' + record.name
                result.append((record.id, name))
            return result


@api.model
    def name_search(self, name, args=None, operator='ilike', limit=100):
        args = args or []
        recs = self.browse()
        if name:
            recs = self.search([('color', '=', name)] + args, limit=limit)
        if not recs:
            recs = self.search([('name', operator, name)] + args, limit=limit)
        return recs.name_get()


上面的示例在键入或完全扫描(例如0369返回标记3)后工作正常,但在键入(例如036)后不返回。

您必须使用
like
ilike
运算符才能使此类搜索工作。它必须是
[('color','ilike',name)]
。如果你想要一个更具体的搜索模式,你也可以使用
=like
=ilike
,但我现在没有他们的例子,所以看看他们在做什么

编辑:在搜索团队中获取搜索通配符也很有帮助:

name
应该是
'%'+name+'%'
所以
[('name','ilike','%036%')]
应该找到
0369
标记