簡単な回答: CSV インポートおよびエクスポート ウィザードの動作を確認してください。レコードをエクスポートすると外部識別子が自動的に作成されるため、同じ CSV を再インポートすると、レコードが再作成されるのではなく更新されます。
長い答え:
OpenERP は外部 ID をir.model.dataテーブルに保存します。これは、ユーザー インターフェイスの [設定] メニューからアクセスできます1。この単純なテーブルは、フォーム内の「外部識別子」を、実際のテーブルと行を指すmodule_name.record_identifierペアにマップします。(model,res_id)
これらの外部 ID は、外部ソース (通常はモジュール (したがって にmodule基づく名前空間) またはインポートされた CSV ファイル) によって作成されたレコードに対応するデータベース ローカル行を見つけるために使用されます。
たとえば、外部識別子は、データベースに EUR 通貨を保持し、モジュールbase.EURによって所有されるデータベース レコードにマップされます。base
バージョン 6.1 以降、OpenERP は、サイドバーのエクスポートウィザードを使用してエクスポートされたすべての OpenERP レコードに対して、新しい外部識別子を自動的に作成します。それらは、 という名前の CSV 列にエクスポートされます。id
また、インポートウィザードを介してインポートされた CSV ファイルにそのようなid列が存在する場合、OpenERP はそれを記憶するための外部識別子も作成します。また、外部識別子が既に存在する場合、レコードは作成されずに更新されます。
id理論的には、マスター データベースから列2を追加した適切な CSV ファイルを作成し(実際の DB ID を使用することもできます)、それを OpenERP にインポートするだけです。その後、いつでもこの CSV ファイルの更新されたバージョンを再インポートできるようになります。
参考文献:
- ImportおよびExportウィザードは、基本的に API メソッドexport_dataおよびimport_dataを呼び出すため、必要に応じて XML-RPC を介してこれをスクリプト化できます。
ir.model.dataモデルは、外部識別子 (モジュール データ ファイル内の XML レコードのフィールドに対応するため、歴史的に XML ID と呼ばれますid) を格納します。
1 OpenERP 6.1 ではSettings>Configuration>Sequences & Identifiers>External Identifiersの下にあり、OpenERP バージョン 7 ではSettings>Technical>Sequences & Identifiers>External Identifiersにあります。
2は、ドット " " 文字を含まない任意の文字列にすることができますモジュール名前空間.に格納され__export__