跳至內容
選單
此問題已被標幟
2 回覆
15700 瀏覽次數

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
4604
0
1月 25
1226
0
4月 24
814
0
11月 23
1063
0
6月 23
2057