Skip to Content
Menu
This question has been flagged
3 Replies
5188 Views
Hello, I need to know how I could define a domain according to the value of another field in the form


or these are the two domains you would need to activate one or the other depending on the value of another field x_availability


Avatar
Discard
Best Answer

You can follow this: https://youtu.be/XGqXEL2qQmE

Hope it helps,

Thanks

Avatar
Discard
Best Answer

Unfortunately return domain has been deprecated.

Avatar
Discard

In odoo 17 , how it work brother ?

Best Answer

Hi Danny,

To define a field domain (field_1) according to the value of another field (field_2), you have to create onchange('field_1') function based on field_1 to return domain of field_2. 

Check the exemple below:
 
@api.onchange('(field_1')
def onchange_field_1(self):
domain = [('id', '=', 0)]
if self.field_1:
domain = expression.OR([domain, [('id', '=', self.field_1.some_field)]])
return {'domain': {'field_2': domain}}



 

Best regards,


Imal-Tech    



Avatar
Discard
Author

I know, but I mean that if for example field 1 = True then the domain of field 2 = domain 1
else
field 1 = False then the domain of field 2 = domain 2, I don't know if you understand me

Check this :

@api.onchange('(field_1')
def onchange_field_1(self):
if self.field_1 == True:
domain = your_domain_1_her
else:
domain = your_domain_2_her
return {'domain': {'field_2': domain}}

Author

Thus, I would be left with the real fields and domains that I would like to use. I must clarify that the x_tinconf field is of the selection type. When declaring it, it gives an error, could you correct me?

@api.onchange('(x_tinconf')
def onchange_x_tinconf(self):
if self.x_tinconf == 'Pvv':
domain = [('x_pvv', '=', True)]
else:
if self.x_tinconf == 'Hsh':
domain = [('x_hsh', '=', True)]
return {'domain': {'x_inconf': domain}}

Danny, could you share with us the error?

Related Posts Replies Views Activity
2
May 24
3222
4
Nov 23
1937
2
Dec 21
5366
1
May 21
3312
2
Mar 23
2917