odoo ORM の many2one 型フィールドには ondelete 設定があり、データ テーブルのリレーションシップ処理に対応します。
ondelete このレコードの動作を設定できる場合、参照されたレコードが削除されるときに設定します。null、制限、カスケード
などを設定します。
a = fields.Many2one('b', string='b', ondelete='set null')
tax_id = fields.Many2one('account.tax', string='Adjustment Tax', ondelete='restrict', domain=[('type_tax_use', '=', 'none'), ('tax_adjustment', '=', True)], required=True)
例 1: モデル b で削除操作が実行されると、次の操作がトリガーされます。
- set null: bでレコードが削除された場合、modelAの関連レコードのa=null
- カスケード: b のレコードを削除すると、modelA の関連レコードもすべて削除されます。
- 制限:bでレコードを削除する際、modelAに該当するレコードが存在する場合、bの削除は行えません
デフォルトは: null を設定します