2017-06-28 9 views
2

タイムシートを入力中にトレースバックエラーが発生しました。 R & Dの後、それはそれが自己であるOdooのコードの問題であることがわかりました。私は最新のものとコードを比較し、問題を発見しました。odooの関数フィールドのメソッドをオーバーライドする方法は?

問題:メソッドは、機能フィールドから呼び出される

。私はそれを上書きしましたが、問題は、それをオーバーライドした後、最初にOdooの元のメソッドを呼び出しています。その後、オーバーライドされたメソッドが呼び出されています。だから私は同じトレースバックエラーに直面している。ここで

は、デフォルトのコードです:ここでは

def _get_task(self, cr, uid, id, context=None): 
    res = [] 
    for line in self.pool.get('account.analytic.line').search_read(cr,uid,[('task_id', '!=', False),('id','in',id)], context=context): 
     res.append(line['task_id'][0]) 
    return res 

Odooで固定バグの後に私のオーバーライドされたコードです:

def _get_task(self, cr, uid, id, context=None): 
    res = [] 
    for line in self.pool.get('account.analytic.line').search_read(cr, uid,[('task_id', '!=', False), ('id', 'in', id)], ['task_id'], context=context): 
     res.append(line['task_id'][0]) 
    return res 

これら二つの間の唯一の違いは、[ 'TASK_ID' です]はsearch_readメソッドで追加されます。

誰でも助けてくれますか?

+0

フィールド定義をオーバーライドして、関数名を変更します。それはあなたのために働くかもしれません – Cherif

答えて

1

関数フィールドの関数は、フィールド "定義"内から呼び出されます。あなたは決してその定義を変更していないので、フィールドはあなたの機能について何も知らない。フィールドを定義するだけで、あなたは関数newを変更します。しかし、古いAPIでは必要だったので、完全に定義することに注意してください。

関連する問題