Openerp 如何覆盖odoo 10中的创建方法
我想在Openerp 如何覆盖odoo 10中的创建方法,openerp,odoo-8,openerp-8,odoo-10,Openerp,Odoo 8,Openerp 8,Odoo 10,我想在odoo 10中使用与下面相同的创建方法,这意味着我想在odoo 10中转换下面的代码,down code对于odoo 8 def create(self, cr, uid, vals, context=None): phase_obj = self.pool.get('hr_evaluation.plan.phase') survey_id = phase_obj.read(cr, uid, vals.get('phase_id'), fields=['survey_id
odoo 10
中使用与下面相同的创建方法,这意味着我想在odoo 10中转换下面的代码,down code
对于odoo 8
def create(self, cr, uid, vals, context=None):
phase_obj = self.pool.get('hr_evaluation.plan.phase')
survey_id = phase_obj.read(cr, uid, vals.get('phase_id'), fields=['survey_id'], context=context)['survey_id'][0]
if vals.get('user_id'):
user_obj = self.pool.get('res.users')
partner_id = user_obj.read(cr, uid, vals.get('user_id'), fields=['partner_id'], context=context)['partner_id'][0]
else:
partner_id = None
user_input_obj = self.pool.get('survey.user_input')
if not vals.get('deadline'):
vals['deadline'] = (datetime.now() + timedelta(days=28)).strftime(DF)
ret = user_input_obj.create(cr, uid, {'survey_id': survey_id,
'deadline': vals.get('deadline'),
'type': 'link',
'partner_id': partner_id}, context=context)
vals['request_id'] = ret
return super(hr_evaluation_interview, self).create(cr, uid, vals, context=context)
我正在尝试以下代码:
def create(self, vals):
survey_id = self.env['hr_evaluation.plan.phase'].read(vals.get('phase_id'),fields=['survey_id'])['survey_id'][0]
if vals.get('user_id'):
partner_id = self.env['res.users'].read(vals.get('user_id'), fields=['partner_id'])['partner_id'][0]
else:
partner_id = None
if not vals.get('deadline'):
vals['deadline'] = (datetime.now() + timedelta(days=28)).strftime(DF)
ret = self.env['survey.user_input'].create({'survey_id': survey_id,
'deadline': vals.get('deadline'),
'type': 'link',
'partner_id': partner_id})
vals['request_id'] = ret
return super(hr_evaluation_interview, self).create(vals)
但是它给了我一个错误,比如
TypeError:read()为关键字参数“fields”获取了多个值
,所以请指导我如何删除这个错误 read
方法接受字段
作为参数,并给它两个参数
read([fields])
在self、low-level/RPC方法中读取记录的请求字段。在Python代码中,首选browse()
与其调用read
方法,不如调用browse()
方法,您可以读取
您的代码应该是:
def create(self, vals):
survey_id = self.env['hr_evaluation.plan.phase'].browse(vals.get('phase_id'))
if vals.get('user_id'):
partner_id = self.env['res.users'].browse(vals.get('user_id'))
else:
partner_id = None
if not vals.get('deadline'):
vals['deadline'] = (datetime.now() + timedelta(days=28)).strftime(DF)
ret = self.env['survey.user_input'].create({'survey_id': survey_id.id,
'deadline': vals.get('deadline'),
'type': 'link',
'partner_id': partner_id.id})
vals['request_id'] = ret.id
return super(hr_evaluation_interview, self).create(vals)
先生,您的代码给了我这个错误'ProgrammingError:can't adapt type'survey.user_input''您能告诉我一些关于它的信息吗?我想问题在最后两行,先生,请告诉我一些关于它的信息,很抱歉晚回复。我想问题出在
ret
试着通过ret.id
。谢谢先生。。我找到了
def create(self, vals):
survey_id = self.env['hr_evaluation.plan.phase'].browse(vals.get('phase_id'))
if vals.get('user_id'):
partner_id = self.env['res.users'].browse(vals.get('user_id'))
else:
partner_id = None
if not vals.get('deadline'):
vals['deadline'] = (datetime.now() + timedelta(days=28)).strftime(DF)
ret = self.env['survey.user_input'].create({'survey_id': survey_id.id,
'deadline': vals.get('deadline'),
'type': 'link',
'partner_id': partner_id.id})
vals['request_id'] = ret.id
return super(hr_evaluation_interview, self).create(vals)