Odoo Domain Expressions use Reverse Polish Notation
This list will give you examples of usage of several operators
'like' operator
[('input', 'like', 'open')]
Returns case sensitive (wildcards - '%open%') search.
O/p: open, opensource, openerp, Odooopenerp
'not like' operator
[('input', 'not like', 'open')]
Returns results not matched with case sensitive (wildcards - '%open%') search.
O/p: Openerp, Opensource, Open, Odoo, odoo, OdooOpenerp
'=like' operator
'=like': [('name', '=like', 'open')]
Returns exact (= 'open') case sensitive search.
O/p: open
'ilike' operator
'ilike': [('name', 'ilike', 'open')]
Returns exact case insensitive (wildcards - '%open%') search.
O/p: Openerp, openerp, Opensource, opensource, Open, open, Odooopenerp, OdooOpenerp
'not like' operator
'not ilike': [('name', 'not ilike', 'open')]
Returns results not matched with exact case insensitive (wildcards - '%open%') search.
O/p: Odoo, odoo
'=ilike' operator
'=ilike': [('name', '=ilike', 'open')]
Returns exact (= 'open' or 'Open') case insensitive search.
O/p: Open, open
'=?' operator
'=?': name = 'odoo' parent_id = False [('name', 'like', name), ('parent_id', '=?', parent_id)]
Returns name domain result & True
name = 'odoo' parent_id = 'openerp' [('name', 'like', name), ('parent_id', '=?', parent_id)]
Returns name domain result & parent_id domain result
'=?' is a short-circuit that makes the term TRUE if right is None or False, '=?' behaves like '=' in other cases
'in', 'not in' operator
'in': [('value1', 'in', ['value1', 'value2'])] - in operator will check the value1 is present or not in list of right term
'not in': [('value1', 'not in', ['value2'])] - not in operator will check the value1 is not present in list of right term While these
'in' and 'not in' works with list/tuple of values, the latter '=' and '!=' works with string
'=', '!=' operators
'=': value = 10 [('value','=',value)] - term left side has 10 in db and term right our value 10 will match
'!=': value = 15 [('value','!=',value)] - term left side has 10 in db and term right our value 10 will not match
'child_of' operator
'child_of': parent_id = '1' #Agrolait 'child_of': [('partner_id', 'child_of', parent_id)]
return left and right list of partner_id for given parent_id
'<=', '<', '>', '>=' operators
'<=', '<', '>', '>=': These operators are largely used in openerp for comparing dates
[('date', '>=', date_begin), ('date', '<=', date_end)]. You can use these operators to compare int or float also.