Odoo:字段上的条件不可见属性只能在一个方向上起作用吗?

时间:2015-08-28 07:55:38

标签: xml inheritance odoo odoo-view

我试图在Odoo表单视图中使某个字段不可见。 当"可以出售"已检查==> "产品经理"应该是隐形的:

enter image description here

enter image description here

我尝试使用属性"隐形"在产品形式的继承视图中使用域:

<record model="ir.ui.view" id="product_template_form_inherit">
    <field name="name">product.template.product.form</field>
    <field name="model">product.template</field>
    <field name="inherit_id" ref="product.product_template_only_form_view" />
    <field name="arch" type="xml">
        <field name="product_manager"  position="attributes">
                    <attribute name="invisible">[('sale_ok', '=', True)]</attribute>
        </field>    
</field>
</record>

当字段sale_ok为true时,product_manager字段实际上是隐藏的。但当字段sale_ok再次变为虚假时,字段product_manager保持隐藏

我也试过这个:

<field name="product_manager" attrs="{'invisible': [('sale_ok', '=', True)]}"/>

这也不起作用。

我还尝试过其他域名:

[('sale_ok', '==', True)]
[('sale_ok', '!=', False)]
[('sale_ok', '=', 'True')]

不确定这里有什么问题......如果(未)检查过,如何使其显示?(/ p>

我最终得到的是以下内容: 选中复选框后,表单应立即更改而不保存。必须添加和删除字段。这可能吗?

修改

我现在可以通过ChesuCR的答案隐藏/取消隐藏产品经理。 但是,当我尝试使用&#34; loc_rack&#34; (存储位置==&gt;机架)它给出错误:

Field(s) `arch` failed against a constraint: Invalid view definition

Error details:
Element '<field name="loc_rack">' cannot be located in parent view

这是我使用的代码:

<field name="loc_rack"  position="replace">
    <field name="loc_rack" attrs="{'invisible': [('sale_ok', '=', True)]}"/>
</field>

为什么我不能对此字段做同样的事情?

2 个答案:

答案 0 :(得分:5)

这对我很有用

<record id="custom_product_template_form_view" model="ir.ui.view">
    <field name="name">custom.product.template.form</field>
    <field name="model">product.template</field>
    <field name="inherit_id" ref="product.product_template_form_view" />
    <field name="arch" type="xml">
        <field name="product_manager"  position="replace">
            <field name="product_manager" attrs="{'invisible': [('sale_ok', '=', True)]}"/>
        </field>
    </field>  
</record> 

答案 1 :(得分:3)

但使用postion="replace"可能会带来问题,最好的选择是使用position="attributes"

下一个代码对我来说非常适合。

<field name="product_manager"  position="attributes">
    <attribute name="attrs">{'invisible': [('sale_ok', '=', True)]}</attribute>
</field>