Domain是一個元組,由3個元素組成 (字段名, 操做符, 值)dom
若是是Many2one/Many2Many/One2many字段,能夠經過'.'取出對應的屬性,如:ui
('routing_id.operation_ids.workcenter_id','=', active_id)
符號 | 說明 |
---|---|
=,>.<,>=,<=,!= | 比較運算,等於,不等於,大於,大於等於,小於,小於等於 |
like | 模糊匹配,經過%value%匹配 |
=like | 能夠使用模式匹配,下劃線-匹配一個字符,百分號%匹配零或者多個字符 |
ilike | 相似like,可是忽略大小寫 |
=ilike | 相似=like,可是忽略大小寫 |
not like | 經過%value%不匹配的 |
not ilike | 相似not like,可是忽略大小寫 |
=? | 未設置或者等於,未設置表示當值是None或者是False,其他和=同樣 |
in | 判斷value是否在元素的列表裏面 |
not in | 判斷value是否再也不元素的列表裏面 |
child_of | 判斷是否value的子記錄 |
示例:code
('company_id','child_of',[user.company_id.id]) ('company_level','not in',('common_company'))
有一個要注意的地方,'in'能夠反向表示,好比:orm
('user_ids', 'in', user.id)
應用場景是當一個model中的字段是user_ids = field.Many2many('res.users'),咱們能夠將這個model的權限賦給這些用戶,只有這些用戶能夠訪問xml
<record id="mrp_dashboard_rule" model="ir.rule"> <field name="name">mrp_dashboard_rule</field> <field name="model_id" ref="model_mrp_workcenter"/> <field name="global" eval="True"/> <field name="domain_force">[('user_ids', 'in', user.id)]</field> </record>
包括字符串,True或False,數字等
在xml中,能取出當前登陸用戶user對象,你能夠取出user.id,user.company_id.id等對象
符號 | 說明 |
---|---|
& | 'AND'或者'與',表示後面2個條件同時知足。默認關係,能夠省略 |
| | 'OR'或者'或',表示後面2個條件知足一個就行 |
! | 'NOT'或者'非',將後面一個條件反轉,若是是True,就變成False |
示例:字符串
[('name', '=', 'Allen'), '|', ('language.code', '!=', 'en_US'), ('company_id', '=', user.company_id.id)]
(Many2one/One2many/Many2many)過濾出不一樣的選擇結果get
default_debit_account_id = fields.Many2one('account.account', string='Default Debit Account', domain=[('deprecated', '=', False)])
如上:只有當account.account中字段deprecated=False的記錄才能被選擇顯示string
在ir.actions.act_windon中添加Domain,當某個地方調用這個動做時,只顯示符合domain條件的記錄it
<record id="relate_partner_opportunities" model="ir.actions.act_window"> <field name="name">Opportunities</field> <field name="res_model">crm.lead</field> <field name="view_mode">kanban,tree,form,graph,calendar</field> <field name="domain">[('type','=','opportunity')]</field> <field name="context">{ 'search_default_partner_id': active_id, 'default_type': 'opportunity' }</field> <field name="view_id" eval="False"/> <field name="search_view_id" ref="crm.view_crm_case_opportunities_filter"/> </record>
<record id="account_move_comp_rule" model="ir.rule"> <field name="name">Account Entry</field> <field name="model_id" ref="model_account_move"/> <field name="global" eval="True"/> <field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field> </record>
<record id="view_crossovered_budget_search" model="ir.ui.view"> <field name="name">crossovered.budget.search</field> <field name="model">crossovered.budget</field> <field name="arch" type="xml"> <search string="Budget"> <field name="name" filter_domain="[('name','ilike',self)]" string="Budget"/> <field name="date_from"/> <field name="date_to"/> <filter string="Draft" domain="[('state','=','draft')]" help="Draft Budgets"/> <filter string="To Approve" domain="[('state','=','confirm')]" help="To Approve Budgets" /> <field name="state"/> </search> </field> </record>
Domain的使用場景還有許多,我就不一一列舉了。Domain的介紹就到此結束了,有什麼問題,請你們多多指教。