odoo domain使用

Domain笔记:

1.domain 表达式规则

最简单的格式:[(‘字段名’,‘操作符’,值)]
例:

[(‘shenqr.user_id’,’=’,uid)]

字段名

如果是Many2one/Many2Many/One2many字段,可以通过’.‘取出对应的属性。
如:

(‘create_uid.company_id.parent_id’,’=’, user.company_id.id)

应用场景

当一个model中的字段是user_ids = field.Many2many(‘res.users’),我们可以将这个model的权限赋给这些用户,只有这些用户可以访问

<record id="mrp_dashboard_rule" model="ir.rule">
     <field name="name">mrp_dashboard_rulefield>
     <field name="model_id" ref="model_mrp_workcenter"/>
     <field name="global" eval="True"/>
     <field name="domain_force">[('user_ids', 'in', user.id)]field>
record>

Domain的使用场景

1.关联字段

(Many2one/One2many/Many2many)过滤出不同的选择结果

default_debit_account_id = fields.Many2one('account.account', string='Default Debit Account', domain=[('deprecated', '=', False)])

如上:只有当account.account中字段deprecated=False的记录才能被选择显示

2.过滤出想要显示的记录

在ir.actions.act_windon中添加Domain,当某个地方调用这个动作时,只显示符合domain条件的记录

<record id="relate_partner_opportunities" model="ir.actions.act_window">
    <field name="name">Opportunitiesfield>
    <field name="res_model">crm.leadfield>
    <field name="view_mode">kanban,tree,form,graph,calendarfield>
    <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>

3.权限过滤

<record id="account_move_comp_rule" model="ir.rule">
    <field name="name">Account Entryfield>
    <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>

4.搜索过滤

<record id="view_crossovered_budget_search" model="ir.ui.view">
   <field name="name">crossovered.budget.searchfield>
   <field name="model">crossovered.budgetfield>
   <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>

ps: 第一次拿有道云上面的笔记出来有点生疏

你可能感兴趣的:(odoo,前端)