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

yizhihongxing

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

  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日

相关文章

  • Python中低维数组填充高维数组的实现

    Python中低维数组填充高维数组的实现可以通过NumPy库中的reshape函数或者newaxis关键字来实现。具体步骤如下: 确定高维数组的维度和形状。 创建低维数组并填充数据。 使用reshape函数将低维数组转换为高维数组。 或者在低维数组中使用newaxis关键字来添加新的维度。 下面是两个示例说明: 示例1:使用reshape函数填充高维数组 i…

    python 2023年6月6日
    00
  • Python 2与Python 3版本和编码的对比

    首先我们需要了解Python 2和Python 3的一些区别和不同,以及在编码方面需要注意的问题。 Python 2与Python 3的主要区别: 打印语句:Python 2中使用print语句,而Python 3中使用print函数。 整数类型:Python 2中的整数类型默认为int,而Python 3中的整数类型为long,int类型只能表示32位整数…

    python 2023年5月31日
    00
  • Python with用法:自动关闭文件进程

    Python with用法:自动关闭文件进程 在 Python 中,使用文件进行读写操作是十分常见的操作行为。通常我们需要手动打开文件、读取文件、写入数据并关闭文件进程。在这个过程中,如果程序出现异常或者在读写文件等待过程中被打断,导致文件未能完全正常关闭,这样就容易出现文件泄露或者文件损坏等问题。 使用 with 语句可以有效解决这类问题,with 语句可…

    python 2023年5月19日
    00
  • 自己编程中遇到的Python错误和解决方法汇总整理

    当我们在Python编程过程中,可能会遇到各种各样的错误,例如语法错误、逻辑错误、模块导入错误等。这些错误可能会导致程序无法正运行,因此我们需要及时解决这些错误。以下是自己编程中遇到的Python错误和解决方法的汇总整理: 1. TypeError 当我们在Python编程过程中遇到以下的报错: TypeError: unsupported operand …

    python 2023年5月13日
    00
  • Django Rest framework之权限的实现示例

    我来详细讲解“Django Rest framework之权限的实现示例”的攻略。 什么是权限 在使用 Django Rest framework(以下简称 DRF)开发 Web API 的过程中,我们需要实现对 API 的访问进行权限控制,以保证数据的安全。权限可以分为两种类型: Object level permissions:对象级别权限,表示对某个具…

    python 2023年6月3日
    00
  • python批量修改文件夹及其子文件夹下的文件内容

    背景介绍 如果想要批量修改文件夹及其子文件夹下的文件内容,可以使用Python编程语言编写脚本。比如,你可能需要在所有的HTML文件中添加指定的标记,或者在所有的CSS文件中将某一特定类名替换为另一个类名等等。 过程说明 下面是一些基本步骤,可以帮助你快速完成批量修改文件夹及其子文件夹下的文件内容的任务。 2.1. 确定文件夹路径 首先,你需要找到需要修改的…

    python 2023年6月5日
    00
  • 基于charles抓取https请求使用过程解析

    当我们需要分析HTTPS请求时,通常情况下,我们通过抓包工具来进行网络请求的截取和分析。而charles正是一种常用的网络抓包工具,大家可以通过设置Charles代理实现抓取Android、iOS等移动端应用请求。下面将详细讲解“基于charles抓取https请求使用过程解析”的完整攻略。 1. 安装Charles及准备环境 首先,我们需要在电脑上安装Ch…

    python 2023年5月23日
    00
  • python 获取et和excel的版本号

    下面是Python获取ET和Excel的版本号的完整实例教程。 1.概述 ET是Python下的XML解析库,常用于处理XML和HTML数据。而Excel是一款电子表格软件,由微软公司开发。在处理ET和Excel文件的时候,有时候需要获取它们的版本号,可以帮助我们更好地了解这些工具的功能和特性。 2.获取ET版本号 获取ET版本号比较简单,只需要少量Pyth…

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