Odoo 中有多种视图类型,包括表单、看板、树、日历、Qweb、搜索等。与表单视图相比,搜索视图用于过滤其他视图的内容,而不是显示内容本身。这使得搜索视图与其他视图不同。表单视图仅包含一条记录,因此不需要搜索。
本文将详细介绍 Odoo 16中的搜索视图和过滤器。
如果我们搜索视图中存在的内容,我们可以将字段名称添加到搜索中并根据相关字段名称接收结果。然后可以检查在 Odoo 16 中创建搜索视图的过程。我们可以将搜索视图添加到视图文件夹内的 XML 文件中,就像表单、树和看板视图一样。
例如,我们已经为 school.student 模型定义了列表和表单视图,并创建了它的模型。现在我们可以为 school.student 模型创建搜索视图。
学校学生视图.xml
<record id="school_student_view_search" model="ir.ui.view">
<field name="name">school.student.view.search.module.name</field>
<field name="model">school.student</field>
<field name="arch" type="xml">
<search>
<field name="name"/>
<field name="email"/>
<field name="age"/>
<field name="gender"/>
<field name="active"/>
</search>
</field>
</record>
在搜索标签内,我们定义每个搜索视图。从这一点开始,我们为搜索命名字段:姓名、电子邮件、年龄和性别。
我们根据这些搜索变量收到所有搜索结果。
筛选器和分组依据选项:
在搜索窗口中,我们还有 Filters 和 Group By 选项。通过对应模型的字段,我们可以对记录进行过滤和分组。点击这些选项,我们可以查看与该模型相关的所有过滤器。我们希望始终选择 Add Custom Filter 或 Add Custom Group。有时这很困难。
我们有一个简单的方法来默认添加过滤器。我们可以看看如何做到这一点。
<record id="school_student_view_search" model="ir.ui.view">
<field name="name">school.student.view.search.module.name</field>
<field name="model">school.student</field>
<field name="arch" type="xml">
<search>
<field name="name"/>
<field name="email"/>
<field name="age"/>
<field name="gender"/>
<field name="active"/>
<filter string="Archived" name="active" domain="[('active', '=', False)]"/>
</search>
</field>
</record>
为了获取所有已归档条目,本例中引入了一个过滤器。如果 name 是必需元素,我们可以在此 name 属性中插入任何名称。此外,由于过滤器将基于域,因此必须提供域名。也就是说,如果字段 active 为 false,过滤器将记录该事实。
对于 Group By,我们可以在组标签内提供过滤器。
<record id="school_student_view_search" model="ir.ui.view">
<field name="name">school.student.view.search.module.name</field>
<field name="model">school.student</field>
<field name="arch" type="xml">
<search>
<field name="name"/>
<field name="email"/>
<field name="age"/>
<field name="gender"/>
<field name="active"/>
<filter string="Archived" name="active" domain="[('active', '=', False)]"/>
<group expand="0" string="Group By">
<filter string="Gender" name="gender" context="{'group_by': 'gender'}"/>
</group>
</search>
</field>
</record>
这里,在代码中,我们使用上下文按性别分组。因此分组将按性别字段进行。我们可以使用该字段进行分组。
像这样,我们可以在 Odoo 16 中自定义搜索视图。