これは質問というより公共サービスの発表です。
OpenERP 6.1 でかなり大きなデータ モデルを実装していたところ、参照するオブジェクトの前にいくつかのオブジェクト参照が定義されているという問題がありました。これに対する簡単な解決策は、「_name」属性のみを含むこれらのオブジェクトのスタブを定義し、これらのスタブを後で実際のオブジェクト定義で「上書き」することです。興味深いことに、この問題は many2one と one2many の関係でのみ発生するようです。最初は、many2many 関係はこの動作の影響を受けないように見えますが、影響を受けるはずです。それらはまだあることがわかりましたが、異なります。
Many2Many リレーションの対象オブジェクトのデータベース テーブルが存在しない場合は、マッピング テーブルに加えて作成されるようです。ターゲット オブジェクトの定義が後で読み込まれると、そのフィールドはその時点で作成済みのデータベース テーブルに追加されます。ここまでは順調ですね。問題は、ターゲット オブジェクト データベース テーブルの作成中に ID フィールドが省略されることです。OpenERP のデータベース更新ルーチンは、「そこにあると思われる」ものには触れないように見えるため、このフィールドがテーブルに追加されることはありません。これにより、エラー メッセージが表示され、たとえば、openerp がテーブルにforeign_key 参照を追加できないことを伝えます。これは、ターゲット オブジェクトの存在するはずの ID フィールドを参照する必要があります。
TL;DR: オブジェクトが実際の定義の前に参照される場合は、すべてのオブジェクト定義に対して常にスタブを作成してください。そうしないと、これに悩まされることになります: ProgrammingError: there is no primary key for referenced table ...