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)