0

openERP を使用して、postgresql データベースから現在の ID を取得しようとしています。これは私の機能です(クラス内):

def get_id(self, cr):
        cr.execute("SELECT id FROM table ORDER BY id DESC LIMIT 1")
        id = cr.fetchone()[0]
        return id

次に、この方法で関数を呼び出しています。

'last_id':fields.function(get_id, method = True, string = 'ID Number', type = 'integer')

しかし、次のエラーが発生します。

TypeError: get_id() は正確に 2 つの引数を取ります (与えられた 7 つ)

私は何を間違っていますか?

4

2 に答える 2

1

関数構文が正しく定義されていません。

def get_id (self, cr, uid, ids, fields, arg, context=None):
        res = {} 
        cr.execute("SELECT id FROM table ORDER BY id DESC LIMIT 1")
        id = cr.fetchone()[0]
        res[ids[0]] = id
        return res

このようなことをしてください

このドキュメントを読んでください。https://doc.openerp.com/v6.0/developer/2_5_Objects_Fields_Methods/field_type.html

これが役立つことを願っています。

于 2013-09-09T10:30:14.987 に答える
1

このようにできます。

def get_id(self, cr, uid, ids, fields, arg, context=None):
     res = {}
     for field in fields:
         cr.execute("SELECT id FROM table ORDER BY id DESC LIMIT 1")
         id = cr.fetchone()[0]
         res[ids[0]][field] = id
    return res
于 2013-09-09T12:44:41.383 に答える