簡単な回答: 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__