前言:
关于search视图,存在三个知识点,就是:
-
搜索
-
过滤
-
分组
1. 搜索
指的就是,在搜索框,根据用户需求,指定搜索实现代码实现了的搜索功能,比如:按部门搜索,按资产名称搜索等等....
实现方法:
<record id="view_kthrp_asset_maintenance_wo_search" model="ir.ui.view"> <field name="name">kthrp.asset.maintenance.work.order.search</field> <field name="model">kthrp.asset.maintenance.work.order</field> <field name="arch" type="xml"> <search> <field name="wo_overview" string="Work Order" filter_domain="['|',('doc_number','ilike',self),('wo_overview','ilike',self)]"/> <field name="asset_id" string="Asset" filter_domain="['|','|','|',('asset_id.name','ilike',self),('asset_id.code','ilike',self),('object_list_ids.asset_id.name','ilike',self),('object_list_ids.asset_id.code','ilike',self)]"/> <field name="engineer_id" string="Engineer" filter_domain="['|',('engineer_id.employee_id.name','ilike',self),('engineer_id.employee_id.number','ilike',self)]"/> <field name="use_department_id" string="Use Dept." filter_domain="['|', ('use_department_id.code', 'ilike', self), '|', ('use_department_id.organization', 'ilike', self), ('use_department_id.pinyin_code', 'ilike', self)]"/> </search> </field> </record>
在search标签内部,就是实现搜索的xml代码,可以看出,代码是通过工作单号,资产名称、编码,工程师,使用部门进行的搜索。
现在我们来细说代码的实现,首先record是一个创建了一个ir.ui.view模型的记录,name为kthrp.asset.maintenance.work.order.search,模型为kthrp.asset.maintenance.work.order,
search标签中,name是一个属性,作用其实不大,string表示展示时的名字,(当用户输入自己想要搜索的名词时,就会提示,按string搜索)
filter_domain跟的是搜索时的数据限制,如果是模糊搜索就用'ilike',完全匹配搜索就用'like', self表示当前输入的内容。
万物皆对象,对什么字段进行限制,都是从model中的存在的字段进行筛选的,通过对象点属性的方式,就能准确定位到我们需要定位的字段属性了。
2. 过滤
<record id="view_kthrp_asset_maintenance_wo_search" model="ir.ui.view"> <field name="name">kthrp.asset.maintenance.work.order.search</field> <field name="model">kthrp.asset.maintenance.work.order</field> <field name="arch" type="xml"> <search> <filter string="Created" name="created" domain="[('state','=','created')]"/> <filter string="Processing" name="processing" domain="[('state','=','processing')]"/> <filter string="Assigned" name="assigned" domain="[('state','=','assigned')]"/> <filter string="Completed" name="completed" domain="[('state','=','completed')]"/> <filter string="Urgent" name="urgency_id" domain="[('priority_id','=','urgent'),('type_classification','in',('repair','preventive'))]"/> </search> </field> </record>
过滤就是输入框下方的小按钮,点击会成为下拉选择,选择需要的状况进行数据的过滤
代码中string表示过滤信息的展示,name辅助属性,domain就是数据的限制实现,根据model中存在的字段,进行数据的限制
3. 分组
<record id="view_kthrp_asset_maintenance_wo_search" model="ir.ui.view"> <field name="name">kthrp.asset.maintenance.work.order.search</field> <field name="model">kthrp.asset.maintenance.work.order</field> <field name="arch" type="xml"> <search> <group string="Group By"> <filter string="State" name="state" domain="[]" context="{'group_by':'state'}"/> <filter string="WO Type" name="type_id" domain="[]" context="{'group_by':'type_id'}"/> <filter string="Use Dept." name="use_department_id" domain="[]" context="{'group_by':'use_department_id'}"/> </group> </search> </field> </record>
分组是需要用group标签包括在里面才能生效,写法也都是固定的方式,只要写上你需要分组的字段,就可以了相对来说会比搜索和过滤简单 一些。