我想使用名称搜索,但下面的示例不起作用。
标签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不归。
答案 0 :(得分:0)
您必须使用like
或ilike
运算符才能使此类搜索正常运行。那必须是[('color', 'ilike', name)]
。如果你想要一个更具体的搜索模式,你也可以使用=like
或=ilike
,但我现在没有他们的例子,所以请查看Odoo doc以了解它们是什么做。