Odoo 10或以上-增强搜索功能

Odoo 10或以上-增强搜索功能,odoo,inventory,Odoo,Inventory,删除筛选器_域后,将显示错误: **更新日期:2018年2月1日** 下面是我的..odoo/addons/ted/models/ted_inventory.py中路径下的代码 from odoo import api, fields, models class TedInventory(models.Model): _inherit = 'stock.picking' trackingnum = fields.Char('trackingnum', readonly=T

删除筛选器_域后,将显示错误:


**更新日期:2018年2月1日**

下面是我的..odoo/addons/ted/models/ted_inventory.py中路径下的代码

from odoo import api, fields, models

class TedInventory(models.Model):
    _inherit = 'stock.picking'

    trackingnum = fields.Char('trackingnum', readonly=True, index=True, help="Tracking number")  
    custom_name = fields.Char(string='Tracking Number',compute='_compute_custom_name',search='_search_custom_name')

    @api.multi
    @api.depends()
    def _compute_custom_name(self):
       ''' The field has to be a computed field
        You do not need to do anything here
       '''
       pass

    def _search_custom_name(self, operator, value):
        res = []
        if operator == 'ilike':
            query = "SELECT id FROM stock_picking WHERE position(trackingnum in %s) >= 1"
            self._cr.execute(query, (value,))
            res_ids = [x[0] for x in self._cr.fetchall()]
            res.append(('id', 'in', res_ids))
            return res
我确信我的应用程序已安装,因为我可以在stock.picking模型中找到自定义的_名称和trackingnum

我还在SearchView中添加了一个新的搜索代码:

当我在这里这样搜索时,搜索结果什么都不是(正如我希望挖掘出TN1234的记录):


您使用的运算符是错误的,因为我喜欢将值搜索到字段中,但您需要另一种方法,将字段搜索到值中,我为您的问题找到了解决方案,但我不认为这是最佳方法,但它是有效的:

在SQL:position(str中的字段)中,将字段搜索到str中

def _search_custom_name(self, operator, value):
    res = []
    if operator == 'ilike':
        query = "SELECT id FROM stock_picking WHERE position(trackingnum in %s) >= 1"
        self._cr.execute(query, (value,))
        res_ids = [x[0] for x in self._cr.fetchall()]
        res.append(('id', 'in', res_ids))
        return res
你也需要考虑其他操作符。


我希望这能对你有所帮助

你试了什么?请给我们看一些你的代码。我有上面的代码,但它不起作用,我不知道它错在哪里。这段代码放在我想的相关视图中。我可以使用find()的迭代循环来标识记录吗。但我不知道如何制作代码。首先不要将代码添加为图片。。。所以有语法突出显示,所以请添加您的代码作为文本。第二,我不理解你的问题:给出一个非常简单的例子:存在哪些记录(具有重要的字段内容)、搜索短语是什么以及搜索后的结果应该是什么记录。Hi Juan,请使用你的代码,但它不会显示我想要的结果(但没有错误;就像最初的短字符搜索一样)。可能是文件中的代码有问题。我如何向您发送代码以供查看?首先,使用编辑器编辑您的问题并发布您的代码,不要粘贴代码的图片,其次,使用和数据库管理器显示您的数据并在我的答案中执行查询显示。避免筛选域属性,然后再次检查。如果删除筛选域,有一个Odoo错误:。。。。。文件“/usr/lib/python2.7/dist packages/odoo/fields.py”,第1048行,在determinate\u domain return getattr(records,self.search)(operator,value)AttributeError:“stock.picking”对象没有属性“\u search\u custom\u name”请显示完整的SearchView代码(无pic)定义,我检查了代码,它工作正常。不要忘记更新您的模块。