odoo 条件下的不可见字段

Invisible field on condition in odoo

我有一个字段,我想在选择特定期刊时隐藏它。

<field name="any_field" attrs="{'invisible':[('journal_id','=',10])]}"/>

并且上面的代码工作正常。

我确定这不是检查 condition.So 的方法,我试过这种方法。

<field name="any_field" attrs="{'invisible':[('journal_id','=',ref('my_module.account_journal_10'))]}"/>

它正在工作,然后我尝试使用日志上的静态字段,例如。代码。

<field name="any_field" attrs="{'invisible':[('journal_id.code','=','CARD')]}"/>

但仍然无法正常工作并从视图中获取错误。

我在想我是否可以 return 来自 .py 的属性,就像我对域所做的那样。

例如

return {'domain':
            {
              'any_field':[('journal_id','=',self.env.ref('my_module.account_journal_10').id)]
            }
        }

任何人都可以帮助我吗? 谢谢。

据我所知,这些 attrs domains/filters 是客户端的,所以你不能使用 journal_id.codepartner_id.customer 之类的东西,因为客户端不我不知道这样的数据。

一个可能的解决方法是在您尝试执行此操作的模型上定义一个相关字段。假设模型是 my.model 并且已经有这个 Many2one 字段 journal_id:

journal_code = fields.Char(string="Journal Code", related="journal_id.code")

现在您需要扩展 my.model 的视图:

<field name="journal_code" invisible="1" />
<field name="any_field" attrs="{'invisible':[('journal_code','=','CARD')]}"/>