Zum Inhalt springen
Menü
Sie müssen registriert sein, um mit der Community zu interagieren.
Diese Frage wurde gekennzeichnet
2 Antworten
15516 Ansichten

what i'm doing 

@api.multi 

 @api.onchange('term_of_employment_id') 

 def _term_of_employment_onchange(self): 

 for rec in self:            

if rec.term_of_employment_id.type: 

 if rec.term_of_employment_id.type == 'fixed': 

 print("===========> I Run") 

 return {'attrs': {'tag': [('invisible', '=', False)]}}

its print I Run statement but can not invisible tag field 

pls point out where im wrong or any solution please 

Avatar
Verwerfen
Beste Antwort

Hi Usman,

You cannot hide a field from the py file using attrs. Either use attrs in XML or if your condition is complex then you can create a boolean field, change its value from onchange / compute field and use it in attrs.

Avatar
Verwerfen
Beste Antwort

Hi,

You can create a compute(or write value to the field in onchange)  Boolean field in the corresponding model and using this field value you can make the other field invisible.


role = # your role field definition
hide = field.Boolean(string='Hide', compute="_compute_hide")

@api.depends('role')
def _compute_hide(self):
    # simple logic, but you can do much more here
    if self.role == 'testrole':
         self.hide = True
    else:
         self.hide = False

Then in the XML,


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


See this sample here: https://stackoverflow.com/questions/38127562/hide-field-odoo-in-python-onchange-method

Thanks

Avatar
Verwerfen
Autor

working like a charm you are always out of the box (y)

Verknüpfte Beiträge Antworten Ansichten Aktivität
1
März 15
4527
0
Jan. 25
1016
0
Apr. 24
718
0
Nov. 23
962
0
Juni 23
1916