删除filter_domain后,会显示错误:
** 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模型中找到custom_name和trackingnum。
当我在这里搜索时,搜索结果什么都没有(因为我希望挖出TN1234的记录):
答案 0 :(得分:0)
你正在使用的操作员是错误的,可以将价值搜索到字段中,但是你需要另一个明智的选择,搜索字段中的值,我找到了解决问题的方法,但我不认为它是最好的方法,但它有效:
在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
您也需要考虑其他运营商。
我希望这对你有所帮助!