首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据库中的Odoo - Many2one实现

数据库中的Odoo - Many2one实现
EN

Stack Overflow用户
提问于 2017-08-28 17:19:18
回答 1查看 871关注 0票数 1

在调试模块时,我需要直接检查postgres中的many2one字段。

如何在数据库中找到属于给定的account_move行的hr_expense_sheet行?ir_model_data表用于实现many2one关系吗?

代码语言:javascript
复制
class HrExpenseSheet(models.Model):
....
    account_move_id = fields.Many2one('account.move', string='Journal Entry', copy=False)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-28 23:04:30

您并没有提供足够的信息让我了解每个模型之间的确切关系,但是这里有一个一般性的想法。

ir_model_data表用于实现many2one关系吗?

Many2one关系是用外键管理的。因此,在HrExpenseSheet模型上,它将account_move_id存储为ID,如果您想直接从数据库中获取AccountMove信息,则必须在account_move中搜索给定的ID。

假设模型是相关的,如下所示:

代码语言:javascript
复制
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)

基本上,您将运行的查询将查找属于给定费用的任何行的所有帐户移动。

代码语言:javascript
复制
SELECT * FROM account_move WHERE id IN (
    SELECT account_move_id FROM hr_expense_sheet WHERE expense_id = 123);

如果您只想查找特定的HrExpenseSheet,可以使用:

代码语言:javascript
复制
SELECT * FROM account_move WHERE id = 123;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45924288

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档