Siirry sisältöön
Menu
Sinun on rekisteröidyttävä, jotta voit olla vuorovaikutuksessa yhteisön kanssa.
Tämä kysymys on merkitty
2 Vastaukset
15905 Näkymät

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
Hylkää
Paras vastaus

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
Hylkää
Paras vastaus

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
Hylkää
Tekijä

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

Aiheeseen liittyviä artikkeleita Vastaukset Näkymät Toimenpide
1
maalisk. 15
4684
0
tammik. 25
1420
0
huhtik. 24
899
0
marrask. 23
1179
0
kesäk. 23
2153