あなたは私のモデルのそれぞれとの間の正確な関係を知っているため実際にはかなり十分な情報を提供しますが、ここでは一般的な考え方だありません。
many2oneリレーションの実装にir_model_dataテーブルが使用されていますか?
Many2one
の関係はforeign keyで管理されています。したがって、HrExpenseSheet
モデルでは、account_move_id
をIDとして格納します。 AccountMove
の情報をデータベースから直接取得する場合は、指定したIDのaccount_move
を検索する必要があります。モデルにこのような関連の何かと仮定すると、
:
class AccountMove(models.Model):
_inherit = "account.move"
...
class HrExpense(models.Model):
_inherit = "hr.expense"
...
class HrExpenseSheet(models.Model):
_inherit = "hr.expense.sheet"
account_move_id = fields.Many2one('account.move', string='Journal Entry', copy=False)
expense_id = fields.Many2one('hr.expense', string='Expense', copy=False)
は基本的に、あなたが実行されるクエリが与えられた費用に属しているすべての行のすべてのアカウントの動きを見つけるために起こっています。
SELECT * FROM account_move WHERE id IN (
SELECT account_move_id FROM hr_expense_sheet WHERE expense_id = 123);
あなたはちょうどあなたが使用することができ、特定のHrExpenseSheet
のために検索する場合:
SELECT * FROM account_move WHERE id = 123;
私はそれ故に適用SQLは、あなたがお勧めですaccount_move_idが列テーブルとして実装されていることがわかりました。 –