如何在 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(它会在更改搜索域之前检查域中是否存在id
或res_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 搜索产品描述吗?