2016-12-28 8 views
3

я хочу использовать тот же метод создания в odoo 10 ниже означает, что я хочу, чтобы преобразовать ниже код в odoo 10, below code хорошо работает odoo 8Как переопределить создать METHODE в 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

Я думаю, что проблема в последних линиях буксировки, пожалуйста, сообщите мне что-нибудь об этом –

 Смежные вопросы

  • Нет связанных вопросов^_^