直接开始搞吧:
在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,带目录