如何制作隐形 Field Odoo 14
Posted
技术标签:
【中文标题】如何制作隐形 Field Odoo 14【英文标题】:How to make invisible Field Odoo 14 【发布时间】:2021-05-24 22:09:39 【问题描述】:在注册支付向导中,我添加了 2 个字段。我想根据'move_type'使字段不可见
如果 move_type == 'in_invoice' --> field1 : 不可见
如果 move_type == 'out_invoice' --> field2 : 不可见
<record id="view_account_payment_register_form_inherit_payment_test" model="ir.ui.view">
<field name="name">account.payment.register.form.inherit.payment.test</field>
<field name="model">account.payment.register</field>
<field name="inherit_id" ref="account.view_account_payment_register_form"/>
<field name="arch" type="xml">
<xpath expr="//group/field[@name='communication']" position="after">
<field name="field1"/>
<field name="field2"/>
</xpath>
</field>
</record>
我该怎么做? 谢谢。
【问题讨论】:
【参考方案1】:你应该使用attrs
属性。
<field name="move_type" invisible="1" /> <!-- you need this for attrs domain work -->
<field name="field1" attrs='"invisible":[("move_type","=","in_invoice")]' />
<field name="field2" attrs='"invisible":[("move_type","=","out_invoice")]' />
您需要在数据模型中包含move_type
才能使其正常工作。如果没有,请将其添加为相对字段。你可以在你的向导代码中这样做
move_type = fields.String(related="account_move.move_type")
【讨论】:
我没有 move_type ,如何将它作为相对它添加到 'account.payment.register' 模型中? 您想使用哪种模型的 move_type 以及该模型与您的 account.payment.register 的关系如何?确切地说,move_type 必须在视图中才能将其用作 attrs 的条件。但是要将该字段放入视图中,您需要将其放入数据模型中。 move_type 来自标准 Odoo:创建供应商账单或客户发票时,点击注册付款时会有一个向导。这里我添加了 2 个字段。我想根据 move_type(in_invoice/out_invoice) 在wiard中显示/隐藏字段,这意味着如果它是Vendre Bill:在向导中如果注册付款仅显示field2,并且对于仅显示field1的客户发票。【参考方案2】:您可以使用payment_type
,付款类型将是Send Money
用于供应商账单,Receive Money
用于客户发票。
示例:
<!-- move_type == in_invoice (Vendor Bill) -> payment_type == outbound (Send Money) -->
<field name="field1" attrs="'invisible': [('payment_type', '=', 'outbound')]"/>
<!-- move_type == out_invoice (Customer Invoice) -> payment_type == inbound (Receive Money) -->
<field name="field2" attrs="'invisible': [('payment_type', '=', 'inbound')]"/>
【讨论】:
以上是关于如何制作隐形 Field Odoo 14的主要内容,如果未能解决你的问题,请参考以下文章