2016-12-28 65 views
3

我想使用相同的odoo 10創建方法如下意思,我想下面的代碼轉換成odoo 10,below codeodoo 8如何覆蓋odoo創建梅索德10

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() got multiple values for keyword argument 'fields'錯誤,請指導我如何刪除這個錯誤?

回答

3

read方法接受fields作爲參數,你給它兩個參數。

read([fields]) 

在self,low-level/RPC方法中讀取記錄的請求字段。在Python代碼中,更喜歡瀏覽()。

Parameters 
    fields -- list of field names to return (default is all fields) 
Returns 
    a list of dictionaries mapping field names to their values, with one dictionary per record 
Raises 
    AccessError -- if user has no read rights on some of the given records 

與其說read方法最好是調用browse()方法,你可以閱讀Browse() vs read() performance in Odoo 8

你的代碼應該是:

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) 
+0

感謝爵士它的工作原理 –

+0

先生你的代碼給我這個錯誤' ProgrammingError:無法調整類型'survey.user_input''你能告訴我一些關於它的事嗎? –

+0

我想問題是在最後兩行請先生告訴我一些關於它 –