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开发一个自动答题程序,包括如何获取题目、如何识别题目、如何搜索答案等。 获取题目 要开发一个自动答题程序,我们需要先获取题目。我们可以使用Python的requests库发送HTTP请求,从网站上获取题目。以下是一个示例,演示如何使用requests库获取题目: impo…

    python 2023年5月15日
    00
  • 手把手教你使用Python解决简单的zip文件解压密码

    下面就手把手教你使用Python解决简单的zip文件解压密码的完整攻略: 1. 安装Python库 解析zip文件需要使用zipfile库,因此需要先安装该库,可以通过在终端输入以下命令来完成安装: pip install zipfile 2. 加载zip文件 使用Python打开zip文件需要使用zipfile.open()函数,该函数的参数需要传入zip…

    python 2023年6月3日
    00
  • Python中的变量、运算符与流程控制

    Python中的变量、运算符与流程控制 变量 在Python中,变量的声明无需显式指定数据类型,变量的类型是根据其所存储的值确定的。变量在使用之前需要进行声明,但不必指定类型,通过赋值来进行初始化。 变量名的命名规范为:只包含字母、数字、下划线,不能以数字开头,不能与Python的关键字重名。 示例代码: # 变量的声明和初始化 num = 5 str = …

    python 2023年5月31日
    00
  • Selenium常见异常解析及解决方案示范

    Selenium常见异常解析及解决方案示范 1. 作用 Selenium是一个自动化测试工具,也可被用于Web服务的应用程序的功能测试。本文将详细讲解在使用Selenium时,遇到的常见的异常以及解决方案,希望能够帮助到大家。 2. 常见异常 2.1. NoSuchElementException 异常 问题描述: 在WebDriver执行元素的定位操作时,…

    python 2023年5月13日
    00
  • ​python中pandas读取csv文件​时如何省去csv.reader()操作指定列步骤

    在Python中,Pandas是用于数据处理和分析的强力库,它简化了诸如CSV文件的常见数据格式的读取和操作。下面详细讲解如何使用Pandas读取CSV文件并指定要读取的列。 准备 在使用Pandas之前,需要先安装它。在终端或命令提示符下运行以下命令安装: pip install pandas 读取CSV文件 使用Pandas读取CSV文件非常简单。可以使…

    python 2023年5月18日
    00
  • python实现redis三种cas事务操作

    下面就来详细讲解Python实现Redis三种CAS事务操作的完整攻略: 什么是CAS操作? CAS是Compare And Swap的缩写,中文翻译为比较并交换。是一类常用的无锁算法,用于在并发环境下实现乐观锁。 在Redis中,CAS操作可以通过WATCH、MULTI、EXEC三条命令来实现。下面分别来讲解这三个命令的用法。 使用WATCH命令实现CAS…

    python 2023年5月19日
    00
  • 字典是在 Python 3.6+ 中排序的吗?

    【问题标题】:Are dictionaries ordered in Python 3.6+?字典是在 Python 3.6+ 中排序的吗? 【发布时间】:2023-04-05 21:31:01 【问题描述】: 字典在 Python 3.6 中排序(至少在 CPython 实现下)与以前的版本不同。这似乎是一个重大变化,但它只是documentation 中…

    Python开发 2023年4月6日
    00
  • Python实现矩阵转置的方法分析

    Python实现矩阵转置的方法分析 什么是矩阵转置? 矩阵转置是将矩阵的行变为列,列变为行的操作。例如,将一个M行N列的矩阵A的转置得到一个N行M列的矩阵B,对B进行转置后即可得到原矩阵A。 Python实现矩阵转置的方法 方法一:使用numpy库的T属性 numpy库是Python数值计算中一个强大的库。numpy中的ndarray对象有一个T属性,可用于…

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