DEV Community

Cover image for Odoo : search multiple fields
Jeevachaithanyan Sivanandan
Jeevachaithanyan Sivanandan

Posted on

Odoo : search multiple fields

In the realm of Odoo development, tailoring search functionality to meet specific needs is crucial for seamless user interactions. While the operator attribute offers basic filtering capabilities, filter_domain emerges as a powerful tool to construct more versatile and adaptive search experiences. Let's dive into its essence and explore practical code examples to harness its potential effectively.

Understanding filter_domain

Definition: A Python expression that evaluates to a domain, allowing you to create custom search filters based on field values.

Flexibility: Surpasses operator in terms of adaptability, enabling searches across multiple fields, applying intricate conditions, and incorporating context variables.
Structure: Evaluates to a list of tuples, where each tuple represents a search condition in the format (field name, operator, value).

How it Works:

  • User Input: The user enters a search term in a designated field.
  • Expression Evaluation: Odoo executes the Python expression specified within filter_domain.
  • Domain Generation: The expression dynamically constructs a domain based on the user's input.
  • Record Filtering: Odoo applies the generated domain to filter records, displaying only those that satisfy the criteria.

Searching Multiple Fields:
filter_domain="[('name', 'ilike', self), ('email', 'ilike', self)]"

Filtering Based on a Condition:
filter_domain="[('state', '=', 'done')]"

Combining Multiple Domains:
filter_domain="[('name', 'ilike', self)] + [('state', '=', 'done')]"

Leveraging Context Variables:
filter_domain="[('partner_id', '=', self.env.user.partner_id.id)]"

Filtering Related Fields:
filter_domain="[('partner_id.name', 'ilike', self)]"

Top comments (0)