Odoo:search_count 不显示存档记录

Odoo: search_count donot show archived record

我有一个名为 job_count 的按钮,可以将作业链接到设备。它只显示作业的活动记录,但是,我想显示所有活动的计数以及与设备相关的作业的存档记录。请帮忙

  def _get_job_count(self):
      for record in self:
          j_count = self.env['job_module'].sudo().search_count([('equipment_id', 'in', self.ids)]])
          record.job_count= j_count

活跃
切换记录的全局可见性,如果 active 设置为 False 该记录在大多数搜索和列表中是不可见的。

您可以通过将以下条件添加到搜索域来手动告诉搜索方法查找存档记录:

 '|', ('active','=',True),  ('active','=',False)

例子:

search_count([('equipment_id', 'in', self.ids), '|', ('active','=',True),  ('active','=',False)])

快捷方式:

Odoo 提供了设置active 标志的快捷方式,您只需要在上下文中指定active_test

whether the default filtering of records with active
field set to False should be applied.

在旧 API 中,active_test 通过 context 参数传递:

.search_count(cr, uid, domain, context=dict(context, active_test=False))

在新的 API 中,您可以使用 with_context 方法来更新搜索上下文:

self.with_context(active_test=False).search_count(domain)

您只需添加上下文 active_test=False.

 def _get_job_count(self):
      for record in self:
          j_count = self.env['job_module'].sudo().with_context(active_test=False).search_count([('equipment_id', 'in', self.ids)]])
          record.job_count= j_count

我解决了这个问题,方法是分别计算活动记录和存档记录的数量,然后将它们加在一起。

  def _get_job_count(self):
      for record in self:
          j_count1 = self.env['job_module'].sudo().search_count([('active','=',False), 
            ('equipment_id', 'in', self.ids)]])
          j_count2 = self.env['job_module'].sudo().search_count([('active','=',True), 
            ('equipment_id', 'in', self.ids)]])
          record.job_count= j_count1 + j_count2