Add custom filters for fields via UI
by Tecnativa https://github.com/OCA/server-ux , Amitaujas https://github.com/OCA/server-ux , Odoo Community Association (OCA) https://github.com/OCA/server-uxAvailability |
Odoo Online
Odoo.sh
On Premise
|
Lines of code | 112 |
Technical Name |
base_search_custom_field_filter |
License | AGPL-3 |
Website | https://github.com/OCA/server-ux |
Versions | 12.0 13.0 14.0 15.0 16.0 17.0 18.0 |
Add custom filters for fields via UI
This module allows to define custom filters in the search views for an specific field belonging to the document or any other related document.
This nature makes the definition quite technical, but once done, it adds the element in the UI for regular user use.
Table of contents
Configuration
- Go to Settings > Technical > User Interface > Custom Field Filters.
- Create a new record, and define following information:
- The Model for which you are defining the filter. It will appear in all the search views of this model.
- The label you want to see on the search line on the Name field. This field allows translations for proper UI in different languages.
- The Expression, which is the field chain string with dot notation. Examples: product_id, product_id.seller_ids.name, partner_id.lang.
- Optionally, you can fill Position After for indicating after which existing field (technical name) the filter will appear. If empty or not found, the filter will be added at the end.
- You can reorder records for determining sorting for multiple filters for the same model with the arrow handle in the left part.
Usage
- Go to the menu entry for which you have defined the custom field filter.
- On the search bar, type anything.
- In the filter list, you will see the line for the element you have defined.
As demo data, a custom field filter is included for sample purposes:

Steps for trying this sample:
- Install contacts module.
- Go to Contacts.
- Type “english” and you’ll find the filter “Language” at the end:

Bug Tracker
Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us to smash it by providing a detailed and welcomed feedback.
Do not contact contributors directly about support or help with technical issues.
Credits
Authors
- Tecnativa
Contributors
- Tecnativa:
- Carlos Dauden
- Pedro M. Baeza
Maintainers
This module is maintained by the OCA.

OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use.
Current maintainer:
This module is part of the OCA/server-ux project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
Please log in to comment on this module
Report comment
Any abuse of this reporting system will be penalizedThere are no ratings yet!
not work
Error:
Odoo Server Error
Traceback (most recent call last):
File "/opt/odoo/odoo/odoo/addons/base/models/ir_http.py", line 237, in _dispatch
result = request.dispatch()
File "/opt/odoo/odoo/odoo/http.py", line 682, in dispatch
result = self._call_function(**self.params)
File "/opt/odoo/odoo/odoo/http.py", line 358, in _call_function
return checked_call(self.db, *args, **kwargs)
File "/opt/odoo/odoo/odoo/service/model.py", line 94, in wrapper
return f(dbname, *args, **kwargs)
File "/opt/odoo/odoo/odoo/http.py", line 346, in checked_call
result = self.endpoint(*a, **kw)
File "/opt/odoo/odoo/odoo/http.py", line 911, in __call__
return self.method(*args, **kw)
File "/opt/odoo/odoo/odoo/http.py", line 530, in response_wrap
response = f(*args, **kw)
File "/opt/odoo/odoo/addons/web/controllers/main.py", line 1317, in search_read
return self.do_search_read(model, fields, offset, limit, domain, sort)
File "/opt/odoo/odoo/addons/web/controllers/main.py", line 1336, in do_search_read
return Model.web_search_read(domain, fields, offset=offset, limit=limit, order=sort)
File "/opt/odoo/odoo/addons/web/models/models.py", line 53, in web_search_read
records = self.search_read(domain, fields, offset=offset, limit=limit, order=order)
File "/opt/odoo/odoo/odoo/models.py", line 4781, in search_read
records = self.search(domain or [], offset=offset, limit=limit, order=order)
File "/opt/odoo/odoo/odoo/models.py", line 1697, in search
res = self._search(args, offset=offset, limit=limit, order=order, count=count)
File "/opt/odoo/odoo/odoo/models.py", line 4453, in _search
query = self._where_calc(args)
File "/opt/odoo/odoo/odoo/models.py", line 4209, in _where_calc
return expression.expression(domain, self).query
File "/opt/odoo/odoo/odoo/osv/expression.py", line 438, in __init__
self.parse()
File "/opt/odoo/odoo/odoo/osv/expression.py", line 640, in parse
raise ValueError("Invalid field %s.%s in leaf %s" % (model._name, path[0], str(leaf)))
Exception
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/opt/odoo/odoo/odoo/http.py", line 638, in _handle_exception
return super(JsonRequest, self)._handle_exception(exception)
File "/opt/odoo/odoo/odoo/http.py", line 314, in _handle_exception
raise exception.with_traceback(None) from new_cause
ValueError: Invalid field product.template.ir_ui_custom_filter_1 in leaf ('ir_ui_custom_filter_1', 'ilike', 'Antitusivo')