Availability |
Odoo Online
Odoo.sh
On Premise
|
Lines of code | 94 |
Technical Name |
serverless_onchange |
License | LGPL-3 |
Serverless Onchange

Available for Hire!
Looking for a skilled and reliable Odoo Developer to bring your business ideas to life? or to fix things? or to analyze unwanted results? or to do whatever in odoo
Let's build something great together! I specialize in custom module development, ERP implementation, and performance tuning tailored to your needs.
Hire Me wa.me/923482852693 /rajeelzahid
Overview
Serverless Onchange is a developer utility module for Odoo 18 that allows you to define
onchange
behavior directly on the client-side without triggering a server call.
This is especially useful for simple field value calculations or dynamic UI updates,
reducing unnecessary API requests and resulting in a much smoother user experience.
It works with multiple field types and supports formula-based dependencies between fields.
Key Features
- Client-side
onchange
computations without server round-trips. - Supports multiple field types: Char, Float, Integer, HTML, Selection, Boolean.
- Formula-based field dependencies for flexible customization.
- Improves performance by reducing API calls and network load.
- Seamless integration with existing Odoo models and forms.
- Ideal for lightweight, real-time computations in the UI.
How to Use
- Define a field with the
serverless_onchange
parameter in your model. - Specify a dictionary where the key is the target field and the value is a JavaScript expression.
- The expression has access to:
self
-> current field valuenew_values
-> current unsaved field valuesold_values
-> previously saved field values
- When the source field changes, the expression is executed client-side and the target field is updated instantly.
- No server calls are made, ensuring faster response times and better UX.
- Example:
boolean_field = fields.Boolean(serverless_onchange={ 'selection_field': """ if (self){ return 'option2'; } else { return 'option3'; } """ })
Please log in to comment on this module