读取继承模型中的 one2many 字段

Read one2many field in inherited model

在odoo v13中,crm.lead模型被sale_crm模块继承和修改。

sale_crm模块中,继承模型crm.lead,增加一个one2many字段,order_ids。这是与 lead.

关联的一组销售订单

我正在尝试继承 crm.lead 模型,并创建一个使用 order_ids 字段计算的新字段。

  1. 我在清单依赖项中添加了sale_crm

  2. 我继承了 crm.lead 模型并尝试连接所有关联 SO 的名称:

    class Co7Lead(models.Model):
     _inherit = "crm.lead"
    
     so_list = fields.Text(
         compute='_get_sos_text',
         string="Text list of associated SOs",
         help="A comma separated list of SOs associated with this lead")
    
     def _get_sos_text(self):
         txt = ""
    
         for order in super(Co7Lead, self).order_ids:
             txt += order.name + ""
    
         return txt
    

不幸的是,这会导致堆栈溢出(哈哈!)

我认为我需要在 order_ids 字段上使用 .browse,但我找不到任何有关如何执行此操作的示例。

compute method must assign the computed value to the field. If it uses the values of other fields (order_ids.name), it should specify those fields using depends().

这里不需要使用superself是一个记录集,所以循环遍历它,获取每条记录order_ids的值。

示例:

@api.depends('order_ids.name')
def _get_sos_text(self):
    for lead in self:
         lead.so_list = "\n".join(order.name for order in lead.order_ids)