【问题标题】:How to get all records from ir.attachment with search in Odoo 13?如何在 Odoo 13 中通过搜索从 ir.attachment 获取所有记录?
【发布时间】: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 有什么好主意吗?

【问题讨论】:

    标签: python python-3.x odoo odoo-13


    【解决方案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)]
      

      【讨论】:

      • 在将域名提供给搜索方法后,您是否获得了所有附件?
      猜你喜欢
      • 2023-02-26
      • 2021-06-13
      • 2020-11-07
      • 1970-01-01
      • 1970-01-01
      • 2021-11-26
      • 1970-01-01
      • 1970-01-01
      • 2022-08-21
      相关资源
      最近更新 更多