| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Lines of code | 605 |
| Technical Name |
kw_widget_autocomplete |
| License | LGPL-3 |
| Website | https://github.com/kitworks-systems/addons |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Lines of code | 605 |
| Technical Name |
kw_widget_autocomplete |
| License | LGPL-3 |
| Website | https://github.com/kitworks-systems/addons |
Widget Autocomplete
Universal autocomplete widget for Odoo 18 with support for multiple
data sources. This widget can be used on char and
text fields to provide autocomplete functionality
from various backends.
Key features include:
- Multiple Data Sources: Model methods, domain search, JSON endpoints, REST API
- Cascading Dependencies: Connect fields with dependent autocomplete
- Field Mapping: Auto-fill related fields on selection
- Custom Callbacks: Execute model methods when option is selected
- Caching: LRU cache for improved performance
Data Sources
1. Model Method
Call any Odoo model method to get autocomplete suggestions:
<field name="city"
widget="kw_autocomplete"
options="{
'source_type': 'model_method',
'source_config': {
'model': 'res.city',
'method': 'autocomplete_search'
},
'min_chars': 2
}"/>
2. Domain Search
Search records directly using domain filters:
<field name="partner_name"
widget="kw_autocomplete"
options="{
'source_type': 'domain_search',
'source_config': {
'model': 'res.partner',
'domain': [['is_company', '=', true]],
'search_field': 'name',
'display_fields': ['name', 'email'],
'label_template': '{name} ({email})',
'value_field': 'name'
}
}"/>
3. JSON Endpoint
Fetch suggestions from an Odoo controller:
<field name="product"
widget="kw_autocomplete"
options="{
'source_type': 'json_endpoint',
'source_config': {
'endpoint': '/shop/autocomplete',
'query_param': 'q'
}
}"/>
4. REST API
Integrate with external REST APIs through a proxy method:
<field name="address"
widget="kw_autocomplete"
options="{
'source_type': 'rest_api',
'source_config': {
'credential_model': 'my.api.credential',
'proxy_method': 'autocomplete_proxy'
}
}"/>
Widget Options
| Option | Type | Description |
|---|---|---|
source_type |
string | Data source: model_method, domain_search, json_endpoint, rest_api |
source_config |
object | Configuration specific to the data source |
min_chars |
int | Minimum characters before search (default: 2) |
cache_size |
int | LRU cache size (default: 50) |
depends_on |
array | Field names for cascading dependencies |
on_select_method |
string | Model method to call when option is selected |
field_mapping |
object | Map option data fields to record fields |
Usage Examples
Cascading Dependencies
<field name="country_id"/>
<field name="city"
widget="kw_autocomplete"
options="{
'source_type': 'model_method',
'source_config': {
'model': 'res.city',
'method': 'search_by_country'
},
'depends_on': ['country_id']
}"/>
Field Mapping
Auto-fill related fields when an option is selected:
<field name="partner_name"
widget="kw_autocomplete"
options="{
'source_type': 'domain_search',
'source_config': {
'model': 'res.partner',
'search_field': 'name',
'display_fields': ['name', 'email', 'phone'],
'value_field': 'name'
},
'field_mapping': {
'partner_email': 'email',
'partner_phone': 'phone'
}
}"/>
Model Method Implementation
@api.model
def autocomplete_search(self, query, dep_values=None):
domain = [('name', 'ilike', query)]
records = self.search_read(domain, ['name'], limit=10)
return [{
'label': r['name'],
'value': r['name'],
'data': r,
} for r in records]
Bug Tracker
Bugs are tracked on https://kitworks.systems/requests. In case of trouble, please check there if your issue has already been reported.
Maintainer
KitWorks Systems. Our web site: https://kitworks.systems
We can provide you further Odoo Support, Odoo implementation, Odoo customization, Odoo 3rd Party development and integration software, consulting services. Our main goal is to provide the best quality product for you.
For any questions contact us.
Please log in to comment on this module