2016-08-15 24 views
1

私は、リストの値を取得するために問題を抱えて:ログにODOO '関数' オブジェクトには、属性を持たない '__getitem__'

def _get_state(self, cr, uid, context=None): 
    idemployee = _default_employee(self, cr, uid, context=None) 
    # sql = " SELECT id, sequence, name FROM wf_state ORDER BY sequence " 
    sql = " SELECT C.id AS id, C.sequence, C.name, member_id, name_related AS employee_name, \ 
        B.name AS group_name, C.name AS state_name FROM wf_group_member A \ 
      LEFT JOIN wf_group B ON B.id = A.group_id \ 
      LEFT JOIN wf_process BB ON BB.id = B.process_id\ 
      LEFT JOIN wf_state C ON C.group_id = B.id \ 
      LEFT JOIN hr_employee D ON D.id = A.member_id \ 
      WHERE LOWER(code) = 'ca' AND member_id = %s ORDER BY sequence " 
    res = [] 
    cr.execute(sql, [(idemployee)]) 
    ardata = cr.fetchall() 
    for data in ardata: 
     # res.append((data[1], data[2])) 
     res.append((data[1], data[2])) 
    return res 

array_state = _get_state 

class cashadvance(osv.osv): 
    _name = 'ga.cashadvance' 
    _columns = { 
     'state' : fields.selection(array_state, 'Status', readonly=True, required=True), 
    } 

_defaults={ 
     'state' : array_state[0][0], 
    } 

エラーは次のとおりです。 '状態':array_state [0] [0]、 例外TypeError:「関数」オブジェクトが何の属性を持っていない「getitem_」

をあなたは_get_state関数を呼び出すintededこの

+0

以下の回答のいずれかがあなたの質問に適切に対応していない場合は、回答をマークするか、さらにコメントを投稿してこの質問を閉じてください。誰でもあなたの質問に答えてくれた人に感謝しています。それは明らかに@kenlyです。 – danidee

+0

okありがとうございました:) – yogakumboro

+0

これはすべてではありません。upvoteとdownvoteの矢印の下に灰色のチェックマークが表示されます。あなたがそれを行うと緑色に変わります...そしてあなたが投稿したあなたの答えを削除した後、コメントでなければなりません – danidee

答えて

1
にご _defaultsを変更

:あなたは結果が空でないことを確認する必要があります

_defaults={ 
    'state' : lambda self, cr, uid, context: array_state(self, cr, uid, context)[0][0], 
    } 

+0

Kenly、ありがとう。それは魅力のように動作します – yogakumboro

+0

@yogakumboro答えを受け入れるか自由にアップしてください。 – Zety

0

に私を助けてください。あなたは実行する必要があります。

array_state = _get_state(args...) 

あなたは括弧を省略し、したがって、あなたがarray_stateに関数オブジェクト自体が割り当てられて、代わりに_get_stateから返された値を割り当てます。

実際に、この種の操作をサポートしていない関数オブジェクトにインデックスを挿入しようとします。 _get_stateから返されたオブジェクトのように、インデックス付けをサポートするオブジェクトには、__getitem__というメソッドがあります。

+0

私は_get_state関数を呼び出してみました: array_state = _get_state自己、cr、uid、コンテキスト=なし) (self、cr、uid、context = None) array_state = _get_state(self、cr、uid、context = None) NameError:名前 'self'は定義されていません – yogakumboro

関連する問題