1

OpenERPで削除されたレコードのリストを取得する方法はありますか? openerp は削除されたレコードのリストを記録すると聞いたことがあります..しかし、私はそれを参照する場所がわかりません..

2 つのデータベースを同期しようとしています。したがって、他のデータベースから対応するレコードを削除できるように、削除されたレコードのモデル名と id はほとんど必要ありません。

4

4 に答える 4

1

openerpのUIから削除をクリックすると、ORMMenthodUNLINKプロトタイプodメソッドにアクセスできます。

def unlink(self, cr, uid, ids, context=None)
    """
    #Delete records with given ids
    Param cr:  database cursor
    Param uid: current user id
    Param ids: id or list of ids
    Param context:   (optional) context arguments, like lang, time zone
    Return : True
    Raise AccessError:
        if user has no unlink rights on the requested object
        if user tries to bypass access rules for unlink on the requested object
    Raise UserError:

        if the record is default property for other records
    """

ここで、IDには、リンクを解除するIDのリストが含まれているため、削除する前にIDを試してみることができます。

ただし、レコードがOpenERPから削除されると、dbに存在しなくなるため、アクセスできなくなります。

オプションで、ここで役立つメカニズムはactiveフィールドです。モデルでアクティブなブールフィールドを定義した場合、OEのアクティブフィールドは特別なフィールドです。アクティブなfalseに設定されたレコードがある場合、特別な努力なしにそのレコードを表示することはできませんが、トリッキーな部分は、アクティブなテーブルにそれらのレコードがまだあることです。 = Falseなので、ドメインを使用して非常に簡単にアクセスできます。

于 2012-06-11T06:53:06.597 に答える
1

答えがわかりました。

osv.osv からクラスobject_proxyを継承し、この中にexecuteという名前の関数がありdef execute(self, db, uid, model, method, *args, **kw):ます。この関数をオーバーライドするだけです。メソッドが unlink の場合は、その record_id とモデル名をデータベースの新しいテーブルに保存しました

于 2012-06-13T05:04:09.740 に答える
0

ジャムの提案unlink()は、複製したいモデルのメソッドをオーバーライドし、削除された ID を別のテーブルに記録することだと思います。その後、同期プロセスはそのテーブルを読み取って削除できます。

データベース全体を複製するだけの場合は、データベース レベルで複製ツールを調べることもできます。

于 2012-06-12T18:18:58.833 に答える