Skip to Content
Menu
This question has been flagged
2 Replies
886 Views

I want to set field invisible, depends on value of many2one field:

field name="kind"/>

field name="render_path" invisible="kind != 'Render'"/>


but this field shows randomly.

 Any solutions?

Avatar
Discard
Best Answer

Hi,


Use the invisible attribute to make your field invisible based on the value of many2one field.

<field name="your_field_to_hide" invisible="many2one_field == 1"/>


In this example you can specify the id of the value of the many2one field.



Hope this helps.


Avatar
Discard
Author

It's working. Thanks a lot.

Best Answer

Hi Piotr:

The direct value of a relation field(M2o,X2m) actually mapping the id of the co-model, not the 'name'.  And i suggest to use attrs + domain to determine the attr 'invisible' , you can try:

    <field name="kind"/>      
​(PS: suppose the field 'kind' is Many2one,  it's better defining it like 'kind_id'.)
 
  <field name="render_path" attrs="{'invisible': [('kind', '!=', <the 'Render' id in co-model>)]}"/> 

  

The domain doesn't support a relational syntax(ie: model.field),  so if you still want use the name like 'Render' as dependency,  you can additionally define a related field in the model:

    kind_name = fields.Char(related='kind.name')

and then in xml file:

    <field name="kind_name" invisible="1"/>  (this field must in the view)
   <field name="render_path" attrs="{'invisible': [('kind_name', '!=', 'Render' )]}"/>  
Avatar
Discard
Related Posts Replies Views Activity
0
Nov 24
519
0
Oct 24
660
1
Oct 24
1023
0
Oct 24
687
0
Oct 24
489