0

Odoo に次のテーブルがあります。これは、テーブル ガールとテーブル ボーイの関係に由来します。

| | girl_id | boy_id | 関係タイプ |

| | 1 | 2 | 友達 |

| | 1 | 3 | 兄弟 |

| | 2 | 7 | 愛好家 |

そう:

  • テーブル ガールには、テーブル リレーションシップを指す 1 対多のフィールド リレーションシップがあります。
  • テーブル ボーイには、テーブル リレーションシップを指す 1 対多のフィールド リレーションシップがあります。
  • テーブル リレーションシップには、girl_id と boy_id の 2 つのフィールドがあり、両方ともテーブル girl と boy をそれぞれ指しています。

シナリオ:

女の子と男の子の形では、フィールドの関係があります。女の子または男の子の新しい関係を追加すると、テーブルの関係 (girl_id、boy_id、および relationship_type) のフィールドに入力するフォームが開きます。私が女の子の形をしていると想像してください。新しい関係を追加をクリックすると、フォームが開きます。girl_id が表示されないようにするためにこれを実装しました (表示されませんが、現在の女の子の ID が含まれています)。したがって、2 つのフィールド (boy_id と relationship_type) しか表示されません。

私が欲しいもの:

例を続けると、boy_id のドロップダウンを開くと、すべての男の子が表示されます。この女の子とすでに関連している男の子も含まれます。たとえば、ID 1 の女の子に関係を追加する場合、ID 2 と 3 の男の子を表示してはならず、ID 2 の女の子である場合、ID 7 の男の子を表示してはなりません。

私の試み

テーブルのリレーションシップに、boys_of_the_girl ('girl_id.relationships' に関連する one2many) と girls_of_the_boy ('boy_id.relationships' に関連する one2many) という名前の 2 つのフィールドを作成しました。

私のコード: (例: 女の子の関係を作成する)

<field name="girl_id" invisible="1"/>
<field name="boys_of_the_girl" invisible="1"/>
<field name="boy_id" domain="[('id', 'not in', boys_of_the_girl)]"/>
<field name="relationship_type"/>

エラー:

RuntimeError: Python オブジェクトの呼び出し中に最大再帰深度を超えました

誰でも私を助けてもらえますか?ありがとうございました!

編集

テーブルボーイ

relationships = fields.One2many(comodel_name='relationship',
                                inverse_name='boy_id',
                                string='Relationships')

テーブルガール

relationships = fields.One2many(comodel_name='relationship', inverse_name='girl_id', string='Relationships')

テーブル関係

boy_id = fields.Many2one(comodel_name='boy', string='Boy', required=True)
girl_id = fields.Many2one(comodel_name='girl', string='Girl', required=True)
relationship_type = fields.Char(string='Relationship type')
4

1 に答える 1