コンテンツへスキップ
メニュー
この質問にフラグが付けられました
2 返信
15915 ビュー

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 

アバター
破棄
最善の回答

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.

アバター
破棄
最善の回答

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

アバター
破棄
著作者

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

関連投稿 返信 ビュー 活動
1
3月 15
4688
0
1月 25
1423
0
4月 24
905
0
11月 23
1189
0
6月 23
2166