Openerp 在odoo 9中使用名称搜索
我想使用名称搜索,但下面的示例不起作用 标签1 1234 标签2 2568 标签3 0369 在输入036之后,我想要得到标签3Openerp 在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')
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
标记