【发布时间】:2016-06-27 14:52:35
【问题描述】:
我收到错误:TypeError: search() 至少需要 4 个参数(给定 2 个)
使用此功能:
def search(self, cr, uid, args, offset=0, limit=None, order=None, context=None, count=False):
order='complete_name'
for index, expr in enumerate(args):
if expr[1] in ['like', 'ilike', 'not ilike', 'not like', '=like']:
args[index][2] = re.sub(r"\s+", '%', expr[2])
return super(stock_location, self).search(cr, uid, args, offset, limit, order, context, count)
开:
pickings = self.env['stock.picking'].search([('picking_type_id.id','=',picking_type_id),('state','=','assigned')])
我尝试使用 self.env 将此函数更改为新的 api,但出现了问题。
def search(self, args, offset=0, limit=None, order=None, context=None, count=False):
order='complete_name'
for index, expr in enumerate(args):
if expr[1] in ['like', 'ilike', 'not ilike', 'not like', '=like']:
args[index][2] = re.sub(r"\s+", '%', expr[2])
return super(stock_location, self).search(self.env, args, offset, limit, order, context, count
)
函数 'def search' 在类 stock_location(models.Model) 中使用。所以我尝试将这个功能从旧的api更改为新的api。为了搜索我正在使用这个功能的选择:
def _compute_can_validate(self):
user_is_admin = self.env.user._is_admin()
user_is_network_manager = self.user_has_groups('stock.group_stock_network_manager')
owned_locations = []
if user_is_network_manager:
owned_locations = self.env['stock.location'].search([('user_ids','in',self.env.user.id),
('type_id.code','=','network')])
【问题讨论】:
-
但是您意识到您正在传递
list,并且该类的实例意味着您只传递了两个参数。你想做什么? -
所以你想说我不需要用self.env把函数def search改成新的api?问题是不是因为这个?
-
检查我的答案,你有参数 cr 和 uid 甚至没有被使用...删除它们应该没问题
-
您能提供您尝试搜索精选的方法/功能吗?我需要函数/方法定义来回答你的问题
-
我用我用来搜索精选的功能编辑了我的问题。
标签: python-2.7 openerp odoo-9