odoo12 修行基础篇之 列表的筛选和分组 (六)

直接开始搞吧:

在my_customer_complain.xml中增加tree视图:

 1 <!--tree列表-->
 2 <record id="tree_my_customer_complain" model="ir.ui.view">
 3     <field name="name">tree.my.customer.complain</field>
 4     <field name="model">my.customer.complain</field>
 5     <field name="arch" type="xml">
 6         <tree decoration-muted="state=='cancel'">
 7             <field name="name"/>
 8             <field name="customer_id"/>
 9             <field name="supplier_id"/>
10             <field name="order_id"/>
11             <field name="complains"/>
12             <field name="state"/>
13         </tree>
14     </field>
15 </record>

这里第一次出现了decoration-muted属性,可以根据条件对记录进行颜色标识,可以定义以下属性,显示颜色不同。

上图是引用的来自网络的图片。

下面开始对状态进行筛选,我想筛选出所有未处理的记录。

在my_customer_complain.xml中增加search视图:

<!--search视图-->
<record id="search_my_customer_complain" model="ir.ui.view">
    <field name="name">search.my.customer.complain</field>
    <field name="model">my.customer.complain</field>
    <field name="arch" type="xml">
        <search>
            <filter name="draft" string="未处理" domain="[('state', '=', 'draft')]"/>
        </search>
    </field>
</record>

升级下,点下筛选中的未处理看看吧。

下面我们来研究下分组:

<!--search视图-->
<record id="search_my_customer_complain" model="ir.ui.view">
    <field name="name">search.my.customer.complain</field>
    <field name="model">my.customer.complain</field>
    <field name="arch" type="xml">
        <search>
            <filter name="draft" string="未处理" domain="[('state', '=', 'draft')]"/>
            <group>
                <filter string="状态" name="state" context="{'group_by':'state'}"/>
            </group>
        </search>
    </field>
</record>

在search中添加group标签,里面定义filter标签,context用来指定分组的字段。

升级下,可以看到如下效果:

有的需求需要在进入页面时就要默认筛选或分组,我们也来搞一下:

<!--给tree视图指定默认的筛选和分组条件-->
<record id="action_my_customer_complaint" model="ir.actions.act_window">
    <field name="context">{'search_default_draft': 1, 'group_by': 'name'}</field>
</record>

id就写对应按钮action的id,model的值就写这个,增加context配置,其中默认筛选要带有search_default_前缀,前缀后的名就是对应filter中name属性的值。因此,要有默认的筛选条件,必须要先定义好filter。默认的分组条件可以不用,直接使用group_by属性指定要分组的字段名即可。上面同时使用了筛选和分组,也可以单独定义,升级,试一下吧。

有点意思吧,现在客户突然来了需求,想要批量处理记录,下一篇我们就来研究下批量处理。

项目git地址:https://github.com/SamNicole1809/odoo12_my_pro,带目录

原文地址:https://www.cnblogs.com/SamNicole1809/p/13673683.html