OpenERP には、A、B、C の 3 つのモデルがあります。A のフォームから開始すると、子 B のツリー リストが表示されます。B の子の 1 つをクリックすると、フォームには子 C のツリー リストがあります。 C の子を親 A と B の両方に関連付ける必要がありますが、A と B の両方に many2one フィールドがあるにもかかわらず、自分自身を B にのみ関連付けます。この関連付けを強制するにはどうすればよいですか? 私は成功せずにactive_idとdefault_getを使用して解決策を見てきました。コンテキスト オブジェクトはこれに役立つようですが、フォームをナビゲートして A から C にドリルダウンするときに、両方の親オブジェクトの ID を動的に設定する方法がわかりません。さまざまな Web フレームワークのように、このようにコンテキストを保持するためにコンテキストが通常使用されない理由がわかりません。
明確にするために、オブジェクト A を編集し、その編集フォームから B のインスタンスを作成し、B の編集フォームから C のインスタンスを作成するときに、C を A と B に関連付けるにはどうすればよいですか?
これを実現するには、C の create メソッドで subselect クエリを使用して単純な更新を実行するだけでよいでしょうか、それとも ORM を壊すのでしょうか?
新しい C インスタンス (ドキュメント) を保存するときにトランザクション データを見ると、ID に関して必要なものはすべてトランザクション内にあることがわかりますが、必要に応じて値にアクセスして操作する方法がわかりません。
{
"jsonrpc":"2.0",
"method":"call",
"params":{
"model":"dbe.vendor",
"method":"write",
"args":[
[
3
],
{
"application":[
[
4,
2,
false
],
[
1,
21,
{
"documents":[
[
4,
37,
false
],
[
4,
35,
false
],
[
4,
46,
false
],
[
4,
36,
false
],
[
0,
false,
{
"state":"new",
"name":"order of precendence test",
"description":"TESTING",
"type_of":7,
"locked":false,
"note":false,
"datas":false,
"datas_fname":false,
"type":"binary",
"application_id":false,
"certification_id":false,
"vendor_id":3,
"message_follower_ids":false,
"message_ids":false
}
]
]
}
]
]
}
],
"kwargs":{
"context":{
"lang":"en_US",
"tz":"EST",
"uid":7
}
},
"session_id":"303ae4c1bd9d49079c4efc9e06e0184f",
"context":{
"lang":"en_US",
"tz":"EST",
"uid":7
}
},
"id":"r138"
}
注: vendor_id は必須フィールドであるため、手動で挿入しましたが、自動入力したいフィールドです。