Search View in Odoo is a feature that allows users to search and filter data in list views. With Search View, we can add search fields, custom filters, groups, and advanced search features to enhance the user experience.
Definition of Search View
Search View in Odoo is defined in an XML file and used to add search elements to a specific model. It consists of search fields, filters, groups, and favorites.
Basic Example of a Search View
Here is a basic example of defining a Search View in Odoo 18:
<record id="view_example_search" model="ir.ui.view">
<field name="name">example.search</field>
<field name="model">example.model</field>
<field name="arch" type="xml">
<search>
<field name="name"/>
<filter string="Active Records" name="active" domain="[('active', '=', True)]"/>
<filter string="Category A" domain="[('category', '=', 'A')]"/>
<group string="Group By">
<filter string="Category" name="group_category" context="{'group_by': 'category'}"/>
<filter string="Date" name="group_date" context="{'group_by': 'date'}"/>
</group>
</search>
</field>
</record>
Explanation
<field name="name"/>
→ Adds a searchable field.<filter>
→ Adds a custom filter based on specific conditions.<group>
→ Adds options to group data by a specific field.
Search View Elements
Odoo 18 supports several main elements in Search View:
1. Search Fields
Allows users to search for data based on a specific attribute.
<field name="customer"/>
2. Filters
Filters are used to refine data based on conditions.
<filter string="Paid" domain="[('state', '=', 'paid')]"/>
3. Group (Group By)
Groups search results based on a field.
<group string="Group By">
<filter string="Customer" name="group_customer" context="{'group_by': 'customer_id'}"/>
</group>
4. Favorites
Favorites allow users to save frequently used searches.
<filter string="My Orders" name="my_orders" domain="[('user_id', '=', uid)]" context="{'group_by': 'date'}"/>
Example: Custom Module Search View
If you have an order.model
, here is an example search view to enhance search functionality:
<record id="view_order_search" model="ir.ui.view">
<field name="name">order.search</field>
<field name="model">order.model</field>
<field name="arch" type="xml">
<search>
<field name="name"/>
<field name="customer_id"/>
<filter string="Confirmed" name="confirmed" domain="[('state', '=', 'confirmed')]"/>
<filter string="Pending" name="pending" domain="[('state', '=', 'pending')]"/>
<group string="Group By">
<filter string="Customer" name="group_customer" context="{'group_by': 'customer_id'}"/>
<filter string="Order Date" name="group_date" context="{'group_by': 'date'}"/>
</group>
</search>
</field>
</record>
Conclusion
Search View in Odoo 18 helps users efficiently search and filter data, improving usability and data management within the Odoo application.