You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何切换company_id时隐藏bank_from_journal_id的关联记录

Odoo实现company_id切换时过滤匹配的银行日记账记录

方法1:字段定义绑定动态Domain

直接在bank_from_journal_id的字段定义中,将域与当前记录的company_id关联,Odoo会自动根据company_id的变化刷新下拉选项。

代码示例:

from odoo import models, fields

class YourCustomModel(models.Model):
    _name = 'your.custom.model'
    _description = 'Custom Model'

    company_id = fields.Many2one('res.company', string='Company', default=lambda self: self.env.company)
    bank_from_journal_id = fields.Many2one(
        'account.journal',
        string='Bank/Cash Journal',
        domain=lambda self: [
            ('type', 'in', ['bank', 'cash']),
            ('company_id', '=', self.company_id.id)
        ]
    )

方法2:onchange方法手动控制域(更灵活)

如果需要添加额外逻辑(比如清空原有选择),可以通过onchange方法响应company_id的变化,动态更新域。

代码示例:

from odoo import models, fields, api

class YourCustomModel(models.Model):
    _name = 'your.custom.model'
    _description = 'Custom Model'

    company_id = fields.Many2one('res.company', string='Company', default=lambda self: self.env.company)
    bank_from_journal_id = fields.Many2one(
        'account.journal',
        string='Bank/Cash Journal',
        domain=[('type', 'in', ['bank', 'cash'])]
    )

    @api.onchange('company_id')
    def _onchange_company_id(self):
        if self.company_id:
            # 清空原有选择,避免无效记录
            self.bank_from_journal_id = False
            return {
                'domain': {
                    'bank_from_journal_id': [
                        ('type', 'in', ['bank', 'cash']),
                        ('company_id', '=', self.company_id.id)
                    ]
                }
            }
        else:
            self.bank_from_journal_id = False
            return {
                'domain': {
                    'bank_from_journal_id': [('type', 'in', ['bank', 'cash'])]
                }
            }

视图层补充设置(可选)

如果上述代码在特定视图中不生效,可直接在XML视图的字段标签中绑定动态域:

<field name="company_id"/>
<field name="bank_from_journal_id" domain="[('type', 'in', ['bank', 'cash']), ('company_id', '=', company_id)]"/>

内容的提问来源于stack exchange,提问作者Denny

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 09:20:42