2016-10-04 5 views
0

Я хочу функцию 2 называют внутри функции 1.Вызов функции внутри другой функции odoo

Функция 2 параметра потребности (num2 и num3), после вызова в источнике я не получаю ошибку, но ничего не произошло так же.

def function_1(self, cr, uid, ids, num1, num2, num3, context=None): 
     res = {} 
     if num1: 
      res['sum'] = num1 + num2 
      return {'value': res} 
     self.function_2(cr, uid, ids, num2, num3, context) 


    def function_2(self, cr, uid, ids, num2,num3, context=None): 
     res = {} 
     if num2: 
      res['sum2'] = num2 + num3 
      return {'value': res} 

Что является проблемой или любым другим решением?

+0

Вам не нужно использовать 'self.'. Это только изменение сферы, а не объекта. –

+0

Что вы ожидали? Я думаю, функция function_1 вернулась «Нет». –

+0

@PatrickHaugh Я ожидаю номер в текстовом поле .... –

ответ

0

Вам не нужно self в function_2 и вы также нуждаетесь в return ключевом слове, потому что после того, как function_2 Оценивают и возвращает это значение вызывающего абонента, который function_1, function_1 также должен вернуть этот результат это вызывающий абонент. если вы не добавите оператор возврата function_1, он вернет None его вызывающему абоненту.

def function_1(self, cr, uid, ids, num1, num2, num3, context=None): 
    # i'll place the function definition at the top (personal preference) 
    def function_2(cr, uid, ids, num2,num3, context=None): 
     res = {} 
     if num2: 
      res['sum2'] = num2 + num3 
      return {'value': res} 

    res = {} 
    if num1: 
     res['sum'] = num1 + num2 
     return {'value': res} 

    return function_2(cr, uid, ids, num2, num3, context=context) 

Лично я не вижу необходимости иметь вложенную функцию. я бы написал это так.

def function_1(self, cr, uid, ids, num1, num2, num3, context=None): 
    res = {} 
    if num1: 
     res['sum'] = num1 + num2 
     return {'value': res} 

    elif num2: 
     res['sum2'] = num2 + num3 
     return {'value': res} 

    else: 
     pass # return some default value here 
Смежные вопросы