-1

私はPythonとopenerpの初心者です。ステータスを変更するためだけに、状態を変更するための単純な承認ボタンを作成したいときに問題があります。

エラー メッセージ :ハンドラが見つかりません。

これは私のスクリプトです:

XML:

<button name="approve" states="draft" string="Approve" type="object"/>

パイソン:

...
class student(osv.osv):
    _name = "sim.student"
    _description = "Data Siswa"

    def approve(self, cr, uid, ids, context=None):
        """ 
        confirm one or more order line, update order status and create new cashmove 
        """
        #cashmove_ref = self.pool.get('lunch.cashmove')
        orders_ref = self.pool.get('sim.student')
        for order_line in orders_ref.browse(cr, uid, ids, context=context):
            if order_line.status != 'confirmed':

                #cashmove_ref.create(cr, uid, values, context=context)
                order_line.write({'status': 'confirmed'}, context=context)
        return order_line.create(cr, uid, ids, context=context)

    ...
4

2 に答える 2

0

エラーは、create()関数の戻り時に呼び出される関数が原因です。あなたはただする必要がありreturn Trueます。また、create 関数には引数として ID がありません。学生の記録に必要なフィールドと値を含む辞書を渡す必要があります。現在の生徒の記録をコピーしようとしている場合は、copy() 関数を使用します。

于 2013-01-11T11:42:16.587 に答える
0

あなたorder_lineはモデルではなくブラウズ可能なオブジェクトであり、write()モデルオブジェクトで実行する必要があります。

それ以外の:

order_line.write({'status': 'confirmed'}, context=context)

試す:

orders_ref.write(cr, uid, order_line.id, {'status': 'confirmed'}, context=context)
于 2013-01-11T09:46:28.207 に答える