如何在 Odoo 13 中通过搜索从 ir.attachment 获取所有记录?

Posted

技术标签:

【中文标题】如何在 Odoo 13 中通过搜索从 ir.attachment 获取所有记录?【英文标题】:How to get all records from ir.attachment with search in Odoo 13? 【发布时间】:2020-12-23 17:49:43 【问题描述】:

根据这个答案:what does attachment=True do odoo 13

当您执行self.env['ir.attachment'].search([]) 时,您不会得到设置了res_field 的记录,顺便说一下,这些记录通常是表的大部分。

当然,我需要获取确实设置了res_id 字段的记录。有没有办法通过ORM 搜索来做到这一点?

或者我是否必须改为执行 SQL 查询?我想你们中的许多人都需要这样做一次。尊重 ORM 有什么好主意吗?

【问题讨论】:

【参考方案1】:

我想如果你想尊重 ORM,你会自定义搜索方法。

我曾经定制过搜索方式,你可以试试

from odoo.osv import expression
    class Test():
        def search(records, domain, *args, **kwargs):
            return search.origin(records, expression.AND([[('id', '=', instance.id)], domain]), *args, **kwargs)
        self.registry['odoo.instance']._patch_method('search', search)

如果尝试失败,则必须执行 SQL 查询

对不起,我的英语学得不好。我正在努力学习它。

【讨论】:

【参考方案2】:

如果不存在,Odoo 将在域中添加res_field=False(它会在更改搜索域之前检查域中是否存在idres_field 字段),因此如果您提供id 或@987654325 @Odoo 不会强制你搜索res_field 设置为False 的记录。

以下域应返回ir.attachment 中的所有记录:

['|', ('res_field', '!=', False), ('res_field', '=',False)]

【讨论】:

在将域名提供给搜索方法后,您是否获得了所有附件?

以上是关于如何在 Odoo 13 中通过搜索从 ir.attachment 获取所有记录?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Python 中通过身份验证从 URL 获取 CSV 文件

Odoo 13 Enterprise SaaS,我可以编辑产品搜索模块以仅使用 JavaScript 搜索产品描述吗?

如何将值从字段传递给 Odoo 13 中的向导?

如何在 Woocommerce 中通过计费电话搜索客户

Odoo 13 - 搜索方法 - 使用模型相关字段的“订单”属性

如何在 mongo 控制台中通过 ObjectId 搜索对象?