2017-08-28 7 views
1

モジュールをデバッグする際に、私は複数のフィールドを直接postgresで検査する必要があります。Odoo - データベースにMany2oneを実装しました

どのように私は与えられたhr_expense_sheet行に属するデータベース内 account_move行を見つけることができますか? ir_model_data many2one関係を実装するためにテーブルが使用されていますか?

class HrExpenseSheet(models.Model): 
.... 
    account_move_id = fields.Many2one('account.move', string='Journal Entry', copy=False) 

答えて

2

あなたは私のモデルのそれぞれとの間の正確な関係を知っているため実際にはかなり十分な情報を提供しますが、ここでは一般的な考え方だありません。

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; 
+0

私はそれ故に適用SQLは、あなたがお勧めですaccount_move_idが列テーブルとして実装されていることがわかりました。 –

関連する問題