In odoo v13, the crm.lead
model is inherited and modified by the sale_crm
module.
In the sale_crm
module, the model crm.lead
is inherited and a one2many
field is added, order_ids
. This is an array of sales orders associated with the lead
.
I am trying to inherit the crm.lead
model, and create a new field that is computed using the order_ids
field.
I added
sale_crm
in the manifest dependenciesI inherit the
crm.lead
model and attempt to concat the names of all the associated SOs: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
Unfortunately, this causes a stack overflow (haha!)
I believe I need to use .browse
on the order_ids
field but I’m not able to find any examples on how to do this.
Advertisement
Answer
The 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().
You don’t need to use super
here, self
is a record set, so loop over it to access the value of order_ids
for each record.
Example:
@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)