首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在odoo中按计算字段进行搜索?

在Odoo中,可以通过在模型中定义计算字段,并在搜索视图中使用这些计算字段进行搜索。

要在Odoo中按计算字段进行搜索,可以按照以下步骤进行操作:

  1. 在目标模型中定义计算字段:在目标模型的Python类中,使用@api.depends装饰器定义一个计算字段。计算字段的值是根据其他字段的值计算得出的,而不是存储在数据库中的。例如,假设我们有一个名为total_amount的计算字段,它是根据quantityprice字段计算得出的总金额。
代码语言:txt
复制
from odoo import models, fields, api

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

    quantity = fields.Float('Quantity')
    price = fields.Float('Price')
    total_amount = fields.Float('Total Amount', compute='_compute_total_amount')

    @api.depends('quantity', 'price')
    def _compute_total_amount(self):
        for record in self:
            record.total_amount = record.quantity * record.price
  1. 创建搜索视图:在目标模型的视图文件中,创建一个搜索视图。搜索视图定义了在搜索记录时要显示的字段和过滤条件。可以使用<filter>标签来定义按计算字段进行搜索的条件。
代码语言:txt
复制
<record id="view_my_model_search" model="ir.ui.view">
    <field name="name">my.model.search</field>
    <field name="model">my.model</field>
    <field name="arch" type="xml">
        <search>
            <field name="total_amount" string="Total Amount"/>
            <filter name="total_amount_greater_than_100" string="Total Amount > 100" domain="[('total_amount', '>', 100)]"/>
        </search>
    </field>
</record>

在上面的示例中,我们在搜索视图中添加了一个名为total_amount的字段,并创建了一个名为total_amount_greater_than_100的过滤器,用于筛选总金额大于100的记录。

  1. 更新目标模型的视图:在目标模型的视图文件中,将搜索视图添加到目标模型的视图中。
代码语言:txt
复制
<record id="view_my_model_form" model="ir.ui.view">
    <field name="name">my.model.form</field>
    <field name="model">my.model</field>
    <field name="arch" type="xml">
        <form>
            <!-- Form view fields here -->
        </form>
    </field>
</record>

<record id="view_my_model_tree" model="ir.ui.view">
    <field name="name">my.model.tree</field>
    <field name="model">my.model</field>
    <field name="arch" type="xml">
        <tree>
            <!-- Tree view fields here -->
        </tree>
    </field>
</record>

<record id="view_my_model_search_inherited" model="ir.ui.view">
    <field name="name">my.model.search.inherited</field>
    <field name="model">my.model</field>
    <field name="inherit_id" ref="view_my_model_search"/>
    <field name="arch" type="xml">
        <xpath expr="//search" position="inside">
            <!-- Additional search fields here -->
        </xpath>
    </field>
</record>

<record id="view_my_model_form_inherited" model="ir.ui.view">
    <field name="name">my.model.form.inherited</field>
    <field name="model">my.model</field>
    <field name="inherit_id" ref="view_my_model_form"/>
    <field name="arch" type="xml">
        <xpath expr="//form" position="inside">
            <!-- Additional form fields here -->
        </xpath>
    </field>
</record>

<record id="view_my_model_tree_inherited" model="ir.ui.view">
    <field name="name">my.model.tree.inherited</field>
    <field name="model">my.model</field>
    <field name="inherit_id" ref="view_my_model_tree"/>
    <field name="arch" type="xml">
        <xpath expr="//tree" position="inside">
            <!-- Additional tree fields here -->
        </xpath>
    </field>
</record>

在上面的示例中,我们通过<field name="inherit_id" ref="view_my_model_search"/>将搜索视图添加到目标模型的视图中。

  1. 更新目标模型的菜单:在目标模型的菜单文件中,将目标模型的视图与菜单项关联起来。
代码语言:txt
复制
<record id="menu_my_model" model="ir.ui.menu">
    <field name="name">My Model</field>
    <field name="model">my.model</field>
    <field name="action" ref="action_my_model"/>
</record>

<record id="action_my_model" model="ir.actions.act_window">
    <field name="name">My Model</field>
    <field name="res_model">my.model</field>
    <field name="view_mode">tree,form</field>
    <field name="search_view_id" ref="view_my_model_search_inherited"/>
</record>

在上面的示例中,我们通过<field name="search_view_id" ref="view_my_model_search_inherited"/>将搜索视图与目标模型的菜单项关联起来。

完成上述步骤后,你就可以在Odoo中使用计算字段进行搜索了。在目标模型的菜单中,你将看到一个搜索视图,其中包含你定义的计算字段。你可以使用这些计算字段来进行搜索,并根据需要添加其他搜索字段。

请注意,以上示例中的代码和视图名称仅供参考,你需要根据实际情况进行调整和修改。

关于Odoo的更多信息和相关产品介绍,你可以访问腾讯云的官方文档:Odoo 产品介绍

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

多个字段如何其中两个进行排序(二次排序)

多个字段如何其中两个进行排序(二次排序) 1 原理     二次排序就是首先按照第一字段排序,然后再对第一字段相同的行按照第二字段排序,注意不能破坏第一次排序的结果。     ...Hadoop有自带的SecondarySort程序,但这个程序只能对整数进行排序,所以我们需要对其进行改进,使其可以对任意字符串进行排序。下面会分别列出这两个程序的详解。       ...在第一个 例子,使用了IntPair实现的compareTo方法,而在下一个例子,专门定义了key比较函数类。      ...同样注意输入与输出的类型必须与自定义的Reducer声明的一致。  ...            String line = value.toString();             // 调用java自己的工具类StringTokenizer(),将map输入的每行字符串规则进行分割成每个字符串

4.8K80

odoo 开发入门教程系列-基本视图

在上一章已经看到,odoo能够为给定模型生成默认视图。实际上,默认视图对于业务应用程序来说是不可接受的。相反,我们至少应该以逻辑的方式组织各个字段。 视图是在带有操作和菜单的XML文件定义的。...在我们的estate模块,我们需要以逻辑方式组织字段: 在列表(树)视图中,我们希望显示的不仅仅是名称。 在表单视图中,应该对字段进行分组。 在搜索视图中,我们必须能够搜索的不仅仅是名称。.../> Odoo生成的默认搜索视图提供了name筛选的快捷方式。...筛选器必须具有以下属性之一: domain:将给定domain添加到当前搜索 dontext:添加一些context到当前搜索,使用group_by给定字段名称对结果分组。...在odoo,domain对记录上的条件进行编码:domain是用于选择模型记录子集的条件列表。每个条件都是一个包含字段名、运算符和值的三元组。

3.2K40

odoo ORM API学习总结兼orm学习教程

计算字段 可以使用 compute 参数计算字段(而不是直接从数据库读取)它必须将计算值分配给字段。...他们在请求时被计算并返回。 设置store=True 将在数据库存储计算字段并启动开启字段搜索。 也可以通过设置search参数开启在计算字段上的搜索。该参数值为一个返回搜索条件的方法名称 。...它必须返回与条件field operator value等效的domain 计算字段默认值。为了允许对计算字段进行设置,使用inverse参数。...在reverse的计算过程,所有使用所述inverse的字段都受到保护,这意味着即使它们的值不在缓存,也无法计算它们。...进行格式化 odoo.fields.One2many和odoo.fields.Many2many使用特殊的“命令”格式来操作存储在字段/与字段关联的记录集。

13.3K10

何在Python快速进行语料库搜索:近似最近邻算法

随后,如果我们有这些词嵌入对应的语料库,那么我们可以通过搜索找到最相似的嵌入并检索相应的词。如果我们做了这样的查询,我们会得到: 我们有很多方法来搜索语料库中词嵌入对作为最近邻查询方式。...对于我的语料库,我会使用词嵌入对,但该说明实际上适用于任何类型的嵌入:音乐推荐引擎需要用到的歌曲嵌入,甚至以图搜图中的图片嵌入。...确保我们在当前路径没有 Annoy 索引或 lmdb 图。 4. 将嵌入文件的每一个 key 和向量添加至 lmdb 图和 Annoy 索引。 5. 构建和保存 Annoy 索引。...写该脚本与我们现在在做的不那么相关,因此我已经推导出整个脚本,如下: 测试 Annoy 索引和 lmdb 图 我们已经生成了 Annoy 索引和 lmdb 图,现在我们来写一个脚本使用它们进行推断。...将我们的文件命名为 annoy_inference.py,得到下列依赖项: 现在我们需要在 Annoy 索引和 lmdb 图中加载依赖项,我们将进行全局加载,以方便访问。

1.6K50

教程 | 如何在Python快速进行语料库搜索:近似最近邻算法

随后,如果我们有这些词嵌入对应的语料库,那么我们可以通过搜索找到最相似的嵌入并检索相应的词。...如果我们做了这样的查询,我们会得到: King + (Woman - Man) = Queen 我们有很多方法来搜索语料库中词嵌入对作为最近邻查询方式。...是近似最近邻搜索算法该出现时候了:它可以快速返回近似结果。很多时候你并不需要准确的最佳结果,例如:「Queen」这个单词的同义词是什么?...对于我的语料库,我会使用词嵌入对,但该说明实际上适用于任何类型的嵌入:音乐推荐引擎需要用到的歌曲嵌入,甚至以图搜图中的图片嵌入。...确保我们在当前路径没有 Annoy 索引或 lmdb 图。 4. 将嵌入文件的每一个 key 和向量添加至 lmdb 图和 Annoy 索引。 5. 构建和保存 Annoy 索引。

1.7K40

odoo 开发入门教程系列-计算字段和变更(Computed Fields And Onchanges)

自然地我们将总面积定义这两者的总和,我们将为此使用计算字段的概念,即给定字段的值将从其他字段的值中计算出来。 到目前为止,字段已直接存储在数据库并直接从数据库检索。字段也可以被计算。...在这种情况下,不会从数据库检索字段的值,而是通过调用模型的方法来动态计算字段的值。 要创建计算字段,请创建字段并将其属性compute设置为方法的名称。...计算方法应为self的每个记录设置计算字段的值。 约定,compute方法是私有的,这意味着它们不能从表示层调用,只能从业务层调用。私有方法的名称以下划线_开头。...依赖(Dependencies) 计算字段的值通常取决于计算记录其他字段的值。ORM期望开发人员使用修饰符depends()指定计算方法上的依赖项。...> 重启服务,浏览器验证(参考本章目标的第二个动画视图) 其它信息 默认的,计算字段不会存到数据库,因此,不可能基于计算字段进行搜索,除非定义一个search 方法。

3.1K30

ODOO优化层级关系查询效率的方法

Odoo10 Development Essentials》Chapter5(p106)中介绍了Odoo中分层关系的建立。 代码如下 在上面的代码。 使用字段来关联上层记录。...使用这个属性来开启分层搜索功能. 使用和字段进行记录所属层级,当时看书的时候对这些代码不是很理解,只是知道这样做能够提高层级关系数据模型查询数据记录的效率。...(递归查询文件夹文件) Odoo为了提高层次结构(树状结构)查询效率,每一条层级数据记录添加跟字段. 假设A是B的上级对象。那么存在这样的逻辑关系。...Odoo 应用 我们用Odoo11的product模块作为演示 在文件.看到产品目录(ProductCategory类.15行起)的代码 在Odoo11的演示数据,产品的目录结构一共有6个 我们查询下数据库的数据...凡事皆有两面,这种存储特性会在数据库添加多余的字段。其实是以空间换时间。

2.2K80

何在 Ububtu 18.04 上安装 Odoo 13

Odoo可以以多重方式进行安装,依赖于用户具体场景以及可用的技术。最简单的安装 Odoo 的方式就是使用官方的 Odoo APT 软件源。...mkdir /opt/odoo13/odoo-custom-addons 稍后,我们将会将该目录添加到addons_path参数。这个参数定义了 Odoo 用来搜索模块的一个列表。...想要启用多进程,你需要编辑 Odoo 配置文件,并且设置一个非 0 的工作进程数字。工作进程数字,基于 系统的 CPU 核心数字和可用的 RAM 内存来计算。...十一、总结 这篇指南带你浏览了如何在 Ubuntu 18.04 上的 Python 虚拟环境 安装 Odoo 13,并使用 Nginx 作为反向代理服务器。...我们展示了如何在生产环境如何启用多进程以及优化 Odoo

8.7K41

odoo 开发入门教程系列-模块交互

Odoo提供了一个开发票模块,因此直接从我们的房地产模块创建发票是很简单的,也就是说,一旦某个房产设置为“已售出”,就会在Invoicing应用程序创建发票 一个具体示例: 记账凭证(Account...不幸的是,没有一种简单的方法可以知道如何在Odoo创建任何给定的对象。大多数时候,有必要查看其模型,以找到所需的字段并提供适当的值。 学习的一个好方法是看看其他模块是如何完成你想做的事情的。...create 方法不接受结果集作为字段值。...为此在account.move创建中包含invoice_line_ids字段,这是一个One2many字段。One2many和Many2many使用通用ORM方法描述的特殊“commands”。...这种格式是一个顺序执行的三元组列表,其中每个三元组都是要对结果集执行的命令。

1.6K10

odoo 开发入门教程系列-模型之间的关系(Relations Between Models)

模型之间的关系(Relations Between Models) 上一章介绍了为包含基本字段的模型创建自定义视图。然而,在任何真实的业务场景,我们都需要不止一个模型。此外,模型之间的链接是必要的。...根据的类型对房地产进行分类是一种标准的业务需求,尤其是为了优化过滤。 一个房产可以有一个类型,但同一类型可以分配给多个房产。这得到了many2one概念的支持。...") 约定,many2one 字段以_id 后缀。...例如,为了在我们的测试模型定义到 account.tax的链接,我们可以这样写: tax_ids = fields.Many2many("account.tax", string="Taxes") 约定...它支持标准Python的集合操作,len()和iter(),以及recs1 | recs2等额外的集合操作。

4.4K40

Odoo开发指北 01 初识Odoo

因此,odoo提供了继承机制,我们可以选择一个基础模块,然后继承它,在它的基础上进行修改、扩展,生成自己的模块。...然后使用自己的模块:把自己的模块路径设置到odoo,重启odoo让其搜索到自定义模块,即可通过odoo进行安装。...security:对模块的访问权限控制,在ir.model.access.csv文件定义。还可以新建一个record_rule.xml,在其中进行更细化的权限控制。...static:静态资源文件,css、js等 views:网页视图文件与模版文件(xml文件,使用QWEB语言进行描述) init.py manifest.py:描述文件 脚手架命令   使用...Odoo 脚手架 odoo-bin scaffold 命令新建了我们的 aaa 应用 …/odoo-bin scaffold aaa 模块开发流程 分析模块模型,得出模型所需的字段有哪些,然后定义模型类

2.3K30

odoo 开发入门教程系列-QWeb简史

构建列表视图很简单,因为只需要字段列表。表单视图也是如此:尽管使用了一些标记,或,但在设计方面几乎没有什么可做的。...您可能已经熟悉现有的引擎,Jinja(Python)、ERB(Ruby) 或Twig(PHP)。Odoo自带内置引擎:QWeb模板。QWeb是Odoo使用的主要模板引擎。...目标: 本节结束时创建一个房产的看板视图 在我们的地产应用程序,我们希望添加一个看板视图来显示我们的房产。看板视图是标准的Odoo视图(如表单和列表视图),但其结构更灵活。...在上面的示例字段name被添加到元素,但state在它之外。当我们需要字段的值但不想在视图中显示它时,可以将其添加到元素之外。...您可能想看看Kanban描述的各种选项。 练习--添加默认分组 使用合适的属性对房产分组,默认类型分组。你必须阻止拖拽和删除。

2K20

ODOO配置文件etcodoo.conf配置详解

2.PostgreSQL数据库访问配置 默认情况下,PostgreSQL只允许通过UNIX套接字和环回连接进行连接(从“localhost”,即安装PostgreSQL服务器的同一台计算机)。...**的基本参数 Odoo通过端口5432通过UNIX套接字连接到本地postgres。...打包的安装程序将自动创建一个新用户(odoo),并将其设置为数据库用户。 数据库管理界面受管理密码设置保护。此设置只能使用配置文件进行设置,并在执行数据库更改之前进行简单检查。...工作进程数量计算 数量规则:(#CPU * 2) + 1 Cron工作者需要CPU 1个工作进程~=6个并发用户 内存大小计算 我们认为20%的请求是繁重请求,而80%是简单请求 一个繁重的工作,当所有的计算字段都设计好了...这样做时,您需要将更多的http头转发给Odoo,并在Odoo配置激活代理模式,让Odoo读取这些头。

6.7K21

何在 CentOS 8 上安装 Odoo 13

这个指南讲解了如何在 CentOS 8 上一个 Python 虚拟机环境从源码安装 Odoo 13。我们将会从 Github 上编译 Odoo 源码并且配置 Nginx 作为反向代理服务器。...想要使 Odoo 部署更安全,我们将会配置 Nginx 作为 SSL 代理服务器,使网站服务器通过 HTTPS 进行服务。 SSL 代理服务器是一个用来处理 SSL 加密解密的代理服务器。...想要启用多进程,你需要编辑 Odoo 配置文件,并且设置一个非 0 的工作进程数字。工作进程数字,基于 系统的 CPU 核心数字和可用的 RAM 内存来计算。...十二、总结 这篇指南带你浏览了如何在 CentOS 8 上的 Python 虚拟环境 安装 Odoo 13,并使用 Nginx 作为反向代理服务器。...我们展示了如何在生产环境如何启用多进程以及优化 Odoo

3.9K20

odoo 开发入门教程系列-模型和基本字段

最重要的属性为 _name,该属性定义了model在odoo系统的属性。...model _name的 . 会被ORM自动化转为_ 。约定所有的model位于一个名为 models 的目录,并且每个mode被定义为一个Python文件。...有两大类领域字段:‘简单’字段--直接存储在模型表的原子值,形如Boolean, Float, Char, Text, Date 和Selection, ‘关系型’ 字段--连接相同或者不同模型的记录...给模型表estate_property添加字段 添加以下字段到表 Field Type name Char description Text postcode Char date_availability...自动创建的字段(Automatic Fields) 参考: 该话题相关文档可参考 Automatic fields. odoo会在所有model(当然,也可以配置禁止自动创建某些字段)创建少数字段

2.3K30

odoo Actions学习总结

环境 odoo-14.0.post20221212.tar Actions(动作) action定义系统响应用户操作的行为:登录、操作按钮、选择发票等… action可以存储在数据库,也可以作为字典直接返回...所有Action都有两个强制属性: type 当前Action的类别,决定可以使用哪些字段以及如何解释action name action的名称,在客户端的界面显示对action的简短用户可读描述...默认获取模型的默认搜索视图。 target (可选) 视图是否应在主内容区域(current)、以全屏模式(fullscreen)或对话框/弹出窗口(new)打开。...context (可选) 传递给视图的附加上下文 domain (可选) 隐式添加到所有视图搜索查询的过滤domain limit (可选) 默认情况下要在列表显示的记录数。...highlight=do_action#the-action-manager 在数据库window action,操作有几个不同的字段,这些字段应被客户端忽略,主要用于组成view列表 view_mode

2.6K30

在Ubuntu 16.04上安装Odoo 10

)并根据您的需要进行修改。...对于正常安装,您可以跳过此行,并且此Odoo实例将默认连接到端口8069。 注意 配置日志部分中所述,在Ubuntu 16.04有很多Odoo日志记录选项。...如上例所示,Odoo日志将完全由系统日志管理(“ 配置日志”部分的选项2 )。如果需要单独的日志文件,请省略该行并进行配置相应的odoo-server.conf,指定日志文件的位置。...如果一切预期进行,您可以启动负载测试模块“行为”测试(与代码不兼容的错误不同),以及您配置的任何其他测试。 更新您的生产系统 如果所有测试都通过,您可以更新生产安装。...Odoo用户文档 Odoo开发人员文档 欢迎您使用腾讯云免费的开发者专属在线实验平台进行试验。更多云计算教程,请前往腾讯云+社区学习。

3.3K42

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

实践环境 Odoo 14.0-20221212 (Community Edition) 需求描述 如下图,列表网仓记录详情页面(form视图),编辑内联视图中的货主记录,为货主和仓库字段搜索,添加过滤条件...,具体如下: 添加、编辑货主时,下拉列表只展示选取和当网仓记录所属公司关联的货主,点击搜索更多,仅展示和当前网仓记录所属公司关联的货主 添加、编辑货主时,下拉列表只展示选取和当网仓记录关联的仓库(到...“仓库” Tab页添加的仓库),点击搜索更多,仅展示和当前网仓记录关联的仓库。...OmsNetwork.company_id关联了相同模型,所以下文可用这个字段进行搜索过滤 'res.company', 'Company', index=True, check_company...,点击下拉列表时 搜索更多打开界面时,会请求该模型函数) 提示:分析OmsNetworkLine模型定义可知道,货主字段(partner_id)为多对一字段,关联ResPartner 模型 class

1.1K30
领券