I'm currently trying to have a field default to a computed value upon creation, but then remain unchanged after the record has been created. I've extended 2 models MrpWorkorder and MrpRouting to add some fields like so:
class MrpRouting(models.Model:
_name = "mrp.workorder"
_inherit = "mrp.workorder"
planning_bucket = fields.Integer("Planning Bucket")
class MrpWorkorder(models.Model):
_name = "mrp.workorder"
_inherit = "mrp.workorder"
planning_bucket = fields.Integer("Planning Bucket",
default=lambda self: self.operation_id.planning_bucket
)
The ideal behavior im going for here, is that when a work order is created, it automatically sets the value of planning_bucket based on the planning_bucket on the associated operation. Then, once the work order is created, the value of planning_bucket should remain unchanged, meaning if i later change the planning_bucket on the operation, it wont change on the work order.
The above code is setting the planning_bucket to 0 on every work order, even if a planning_bucket value exists on the associated operation. I was able to get the values to set properly with the compute argument, but the issue i had with that was that any time the operation's planning bucket changed, the work order planning bucket also changed.
I'm running Odoo 15.0. Any help would be really appreciated!