如何根据条件 odoo 12 在选择字段上使用获取默认方法?
How to use get default method on a selection field based on condition odoo 12?
我想做的是根据记录的状态从选择字段中获取一个元素。
@api.model
def _get_next_step(self):
for rec in self:
if rec.state == 'draft':
return rec.write({'next_step': 'waiting_room'})
elif rec.state == 'waiting_room':
return rec.write({'next_step': 'start_consultation'})
elif rec.state == 'start_consultation':
return rec.write({'next_step': 'finish_consultation'})
next_step = fields.Selection([
('waiting_room', 'To Waiting Room'),
('start_consultation', 'Start Consultation'),
('finish_consultation', 'Finish Consultation'),
('follow_up', 'Follow-Up'),
], string='Next Step', copy=False, index=True, track_visibility='onchange', defult='_get_next_step')
我在这里尝试做的是,在选择字段中应用默认值并为默认方法编写一个函数,但是字段 next_step 没有得到更新。
默认执行环境永远不会有记录,self
永远是空记录集。 api.model
装饰器已经告诉你了。
您可以将字段 next_step
更改为计算字段并在 state
上触发重新计算。当您存储计算字段时,searches/grouping 之类的所有内容都将像在普通字段上一样工作。
我想做的是根据记录的状态从选择字段中获取一个元素。
@api.model
def _get_next_step(self):
for rec in self:
if rec.state == 'draft':
return rec.write({'next_step': 'waiting_room'})
elif rec.state == 'waiting_room':
return rec.write({'next_step': 'start_consultation'})
elif rec.state == 'start_consultation':
return rec.write({'next_step': 'finish_consultation'})
next_step = fields.Selection([
('waiting_room', 'To Waiting Room'),
('start_consultation', 'Start Consultation'),
('finish_consultation', 'Finish Consultation'),
('follow_up', 'Follow-Up'),
], string='Next Step', copy=False, index=True, track_visibility='onchange', defult='_get_next_step')
我在这里尝试做的是,在选择字段中应用默认值并为默认方法编写一个函数,但是字段 next_step 没有得到更新。
默认执行环境永远不会有记录,self
永远是空记录集。 api.model
装饰器已经告诉你了。
您可以将字段 next_step
更改为计算字段并在 state
上触发重新计算。当您存储计算字段时,searches/grouping 之类的所有内容都将像在普通字段上一样工作。