Odoo 10 如何使用包含ODOOV10中目标字段字符串某些字符的字符串搜索记录?

Odoo 10 如何使用包含ODOOV10中目标字段字符串某些字符的字符串搜索记录?,odoo-10,odoo,Odoo 10,Odoo,我正在使用奥多v10。扫描条形码时,字符串包含字符字段值的一些字符。比如说, 字段值('tracknum')=“20171103” 输入字符串“XXXXXX 20171103”或“xxxx20171103yyy”搜索字段 有什么办法吗? 我已修改搜索视图: 如何挖掘相关记录 您可以像这样创建一个辅助计算字段 custom_name=fields.Char( string='Custom', compute=''计算\自定义\名称', 搜索=''搜索\自定义\名称' ) @api.mul

我正在使用奥多v10。扫描条形码时,字符串包含字符字段值的一些字符。比如说,

  • 字段值('tracknum')=“20171103”
  • 输入字符串“XXXXXX 20171103”或“xxxx20171103yyy”搜索字段
有什么办法吗? 我已修改搜索视图:


如何挖掘相关记录


您可以像这样创建一个辅助计算字段

custom_name=fields.Char(
string='Custom',
compute=''计算\自定义\名称',
搜索=''搜索\自定义\名称'
)
@api.multi
@api.depends()
定义\u计算\u自定义\u名称(自身):
''该字段必须是计算字段
你不需要在这里做任何事情
'''
通过
定义搜索自定义名称(自身、运算符、值):
''实际上这将一个域转换成另一个域。
有了这个新域名,Odoo可以很好地进行搜索
论据:
*接线员:如果你在搜索单词,它会像我一样
*值:搜索的字符串
该方法可以返回如下内容
*[('id','in',id_列表)]
'''
all_records=self.search([])#记录集包含当前模型的所有值
ids=[]
如果运算符=='ilike':
ids=所有_记录。已筛选(值中的lambda r:r.tracknum)。已映射('id'))
返回[('id','in',id)]
然后,您可以将此字段添加到搜索视图中,如下所示:


请记住,它不是一个存储字段,因此将非常低效。每次要进行搜索时,都应该迭代所有值

一旦您将字段添加到搜索视图中,它应该如下所示,跟踪编号应该出现在字段名称中


SearchView:。。。有没有改变的想法?你是说在销售点模块?不完全是。它应该用于一般搜索。我输入的字符串比字段中存储的值长,但它包含一个或多个字符。我希望通过搜索字符串来挖掘记录。好的,检查
name\u search
方法是否是您要查找的。源代码中有几个示例。虽然我还没有使用版本10编程,所以可能不推荐使用该方法。我在SearchView中使用该方法:但它只允许我搜索,例如“2017”,并获取记录。我想输入例如“xxx20171103zzz”来搜索记录。你认为有可能吗?“in”不是一个正确的postgresql语法。我试过了,但失败了。我检查PostgreSQL是否有%匹配任何字符序列。我使用('tracknum','in','%'+self)它不工作,但没有错误。有改进的想法吗?啊,当然,中的
只适用于列表。检查所有可用的操作员。我想如果我的新答案对@cyliinhk有帮助,它将作为python操作符进行检查。如果搜索方法不起作用,也许你应该创建一个虚拟计算字段。我已经更新了答案,请检查它是否有助于你@cylinhkthanks@ChesuCR。我会先试试,然后再给你反馈。