odoo 为可编辑列表视图字段搜索添加查询过滤条件的详细过程

要为可编辑列表视图字段搜索添加查询过滤条件,需要进行以下步骤:

  1. 定义一个搜索视图。

搜索视图是一个 XML 文件,用于定义搜索条件的过滤器和默认值。

示例代码:

<?xml version="1.0" encoding="UTF-8"?>
<search>
    <field name="my_field" string="My Field"/>
</search>

在上述代码中,“my_field”是要添加过滤条件的字段名称,“My Field”是在搜索视图中显示的字段名称。

  1. 将搜索视图添加到模型中。

可以在该模型的 search_view_id 字段中设置搜索视图。

示例代码:

class MyModel(models.Model):
    _name = 'my.model'
    _description = 'My Model'

    my_field = fields.Char()

    search_view_id = fields.Many2one(
        comodel_name='ir.ui.view', string='Search View',
        domain="[('model', '=', _name), ('type', '=', 'search')]",
        ondelete='set null')

在上述代码中,search_view_id 是一个对 ir.ui.view 模型的引用。该字段的 domain 参数用于限制可供选择的视图列表,以确保您只添加搜索视图。

  1. 为搜索视图添加过滤条件。

可以在搜索视图的 filter 标记中添加过滤器。过滤器是一个用于定义要过滤的字段、比较运算符以及要匹配的值的 XML 标记。

示例代码:

<?xml version="1.0" encoding="UTF-8"?>
<search>
    <field name="my_field" string="My Field"/>
    <filter string="My Field contains 'test'">
        <field name="my_field" string="My Field"/>
        <value>test</value>
    </filter>
</search>

在上述代码中,filter 标记包含要添加的过滤器,它包括一个字符串来描述过滤器以及 field 标记和 value 标记来定义用于过滤的字段和值。

  1. 将搜索视图与列表视图关联起来。

在列表视图的 search_view_id 属性中,可以指定要使用的搜索视图。

示例代码:

<record id="my_model_list" model="ir.ui.view">
    <field name="name">my.model.list</field>
    <field name="model">my.model</field>
    <field name="arch" type="xml">
        <tree>
            <field name="my_field"/>
        </tree>
    </field>
    <field name="search_view_id" ref="my_model_search_view"/>
</record>

在上述代码中,search_view_id 属性包含要使用的搜索视图的引用。

  1. 编辑列表视图字段

点击编辑视图图标,进入“编辑视图”这个页面。编辑关键字为<field>的标签,这个是视图中控件的表示标记。

示例代码:

<field name="my_field" options="{'searchable': true}"/>

在上述代码中,options 参数中通过 searchable 参数设置当前字段为可搜索。

  1. 添加数据

在这个模型对象的视图中,添加数据。

  1. 测试搜索

在列表视图上,会有搜索框,与任何其他搜索框一样,通过搜索框输入任何字符串,在my_field中包含该字符串的所有记录都将显示。

另一个示例用于搜索 datetime 类型的字段:

  1. 定义搜索视图
<?xml version="1.0" encoding="UTF-8"?>
<search>
    <field name="start_datetime" string="Start Datetime"/>
</search>

在上述代码中,“start_datetime”是要添加过滤条件的字段名,“Start Datetime”是在搜索视图中显示的字段名。

  1. 将搜索视图添加到模型中
class MyModel(models.Model):
    _name = 'my.model'
    _description = 'My Model'

    start_datetime = fields.Datetime(string='Start Datetime')

    search_view_id = fields.Many2one(
        comodel_name='ir.ui.view', string='Search View',
        domain="[('model', '=', _name), ('type', '=', 'search')]",
        ondelete='set null')

在上述代码中,search_view_id 是一个对 ir.ui.view 模型的引用,该字段的 domain 参数用于限制可供选择的视图列表,以确保您只添加搜索视图。

  1. 为搜索视图添加过滤条件
<?xml version="1.0" encoding="UTF-8"?>
<search>
    <field name="start_datetime" string="Start Datetime"/>
    <filter name="week" string="This Week">
        <field name="start_datetime"/>
        <range name="week"/>
    </filter>
    <filter name="month" string="This Month">
        <field name="start_datetime"/>
        <range name="month"/>
    </filter>
</search>

在上述代码中,range 标记用于指定要匹配的时间范围。

  1. 将搜索视图与列表视图关联起来
<record id="my_model_list" model="ir.ui.view">
    <field name="name">my.model.list</field>
    <field name="model">my.model</field>
    <field name="arch" type="xml">
        <tree>
            <field name="start_datetime"/>
        </tree>
    </field>
    <field name="search_view_id" ref="my_model_search_view"/>
</record>

在上述代码中,search_view_id 属性包含要使用的搜索视图的引用。

5.编辑列表视图字段

<field name="start_datetime" type="datetime" 
    options="{'searchable': True, 'widget': 'date'}"/>

在上述代码中, options 参数是字典,searchable 参数设置当前字段为可搜索,widget 参数设置当前字段的控件为日期选择器。

  1. 添加数据

在此模型对象的视图中添加数据。

  1. 测试搜索

在列表视图上,会有搜索框,与任何其他搜索框一样,通过搜索框输入时间范围,在 start_datetime 中包含该时间范围内的所有记录都将显示。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:odoo 为可编辑列表视图字段搜索添加查询过滤条件的详细过程 - Python技术站

(0)
上一篇 2023年6月3日
下一篇 2023年6月3日

相关文章

  • JS中min函数实例讲解

    JS中min函数实例讲解 在JavaScript中,min函数是一个用于获取最小值的内置函数。本文将对min函数进行详细说明和实例讲解。 语法 min函数的语法如下: Math.min([value1[, value2[, …]]]) 参数说明: value1, value2, …: 必选参数,可以传入任意个数的数值或数值变量。 返回值 min函数会…

    python 2023年6月3日
    00
  • python获取酷狗音乐top500的下载地址 MP3格式

    获取酷狗音乐top500的下载地址MP3格式,可以通过Python的爬虫技术实现。本攻略将介绍如何使用Python爬虫获取酷狗音乐top500的下载地址MP3格式,包括获取酷狗音乐top500的歌曲列表、获取酷狗音乐top500的歌曲下载地址、下载酷狗音乐top500的歌曲等。 步骤1:获取酷狗音乐top500的歌曲列表 首先,我们需要获取酷狗音乐top50…

    python 2023年5月15日
    00
  • python 字典(dict)遍历的四种方法性能测试报告

    下面是详细的攻略: 1. 确定测试目标 在进行性能测试之前,需要先明确要测试的目标。在本文中,我们的目标是比较四种Python字典(dict)遍历方法的性能差异,这四种方法分别是: for…in循环 items()方法 keys()方法 values()方法 我们将使用Python中的timeit模块对这四种方法进行性能比较。 2. 首先导入必要的模块 …

    python 2023年5月13日
    00
  • 详解Python 重命名目录中的所有文件名

    当需要批量重命名目录中的所有文件名时,可以使用Python进行自动化操作。以下是使用Python重命名目录中的所有文件名的完整攻略: 1. 导入必要的模块 要进行文件名修改,首先要导入Python内置的os模块,该模块提供了很多文件操作函数。 import os 2. 使用os.listdir()函数获取目录下的所有文件名 使用os.listdir()函数获…

    python-answer 2023年3月25日
    00
  • python 图像增强算法实现详解

    Python图像增强算法实现详解 图像增强是一种常用的图像处理技术,它可以改善图像的质量和视觉效果。在本文中,我们将介绍如何使用Python实现图像增强算法。我们将分为以下几个步骤: 载入图像 灰度化处理 直方图均衡化 高斯滤波 边缘检测 示例说明 步骤1:载入图像 在实现图像增强算法之前,需要载入图像。在这个例子中,我们将使用Pillow库中的Image类…

    python 2023年5月14日
    00
  • Python实现的三层BP神经网络算法示例

    以下是关于“Python实现的三层BP神经网络算法示例”的完整攻略: 简介 BP神经网络是一种常见的人工神经网络,它可以用于分类和回归问题。本教程将介绍如何使用Python实现三层BP神经网络算法,并讨论如何使用该算法进行分类。 步骤 1.导入库和数据 首先,我们需要导入必要的库,包括numpy和pandas。在Python中,可以使用以下代码导入这些库: …

    python 2023年5月14日
    00
  • 一行代码python实现文件共享服务器

    让我来详细解释一下“一行代码python实现文件共享服务器”的完整攻略。 简介 在讲解具体实现方法之前,我们先来了解一下所使用的库和工具。 Python标准库 http.server:Python内置的HTTP服务器模块。 twisted :Python异步网络框架,用于网络编程。 这两个库都可以用于实现文件共享服务器,但在本文中我们主要关注 http.se…

    python 2023年6月5日
    00
  • Python 字符串与二进制串的相互转换示例

    关于“Python 字符串与二进制串的相互转换示例”,以下是完整的攻略,包含具体的示例说明。 标题:Python 字符串与二进制串的相互转换示例 什么是字符串与二进制串? 在 Python 中,字符串(string)是一种表示文本数据的类型,由一系列 Unicode 编码组成。而二进制串(binary)是一种表示二进制数据的类型,由一系列 0 和 1 的位组…

    python 2023年6月5日
    00
合作推广
合作推广
分享本页
返回顶部