如何将现有的相关字段转换为 Odoo 13 中的计算字段?
How to convert an existing related field into a computed one in Odoo 13?
我有这个现有字段:
picking_code = fields.Selection(
related='picking_id.picking_type_id.code',
readonly=True,
)
而我想继承它,删除related
参数并添加一个compute
参数来根据某些条件设置它的值。
我的尝试:
@api.depends('picking_id', 'picking_id.picking_type_id',
'picking_id.picking_type_id.code',
'move_id', 'move_id.picking_type_id',
'move_id.picking_type_id.code')
def _compute_picking_code(self):
_logger.critical('NEVER EXECUTES THIS' * 80)
for line in self:
if line.picking_id:
line.picking_code = line.picking_id.picking_type_id.code
else:
line.picking_code = line.move_id.picking_type_id.code
picking_code = fields.Selection(
related=False,
compute='_compute_picking_code',
)
问题是从未执行过计算方法,我收到以下错误,这是有道理的,因为如果未执行计算方法,则不会为该字段设置选择值:
AssertionError: Field stock.move.line.picking_code without selection - - -
已解决,如果有人对此主题感兴趣,它是一个 Selection
字段,因此如果删除 related
参数,我必须再次指定 [=13= 的元组列表]参数。
picking_code = fields.Selection(
selection=[
('incoming', 'Receipt'),
('outgoing', 'Delivery'),
('internal', 'Internal Transfer'),
],
compute='_compute_picking_code',
related=False,
readonly=True,
)
我有这个现有字段:
picking_code = fields.Selection(
related='picking_id.picking_type_id.code',
readonly=True,
)
而我想继承它,删除related
参数并添加一个compute
参数来根据某些条件设置它的值。
我的尝试:
@api.depends('picking_id', 'picking_id.picking_type_id',
'picking_id.picking_type_id.code',
'move_id', 'move_id.picking_type_id',
'move_id.picking_type_id.code')
def _compute_picking_code(self):
_logger.critical('NEVER EXECUTES THIS' * 80)
for line in self:
if line.picking_id:
line.picking_code = line.picking_id.picking_type_id.code
else:
line.picking_code = line.move_id.picking_type_id.code
picking_code = fields.Selection(
related=False,
compute='_compute_picking_code',
)
问题是从未执行过计算方法,我收到以下错误,这是有道理的,因为如果未执行计算方法,则不会为该字段设置选择值:
AssertionError: Field stock.move.line.picking_code without selection - - -
已解决,如果有人对此主题感兴趣,它是一个 Selection
字段,因此如果删除 related
参数,我必须再次指定 [=13= 的元组列表]参数。
picking_code = fields.Selection(
selection=[
('incoming', 'Receipt'),
('outgoing', 'Delivery'),
('internal', 'Internal Transfer'),
],
compute='_compute_picking_code',
related=False,
readonly=True,
)