基于其他字段的计算字段默认值

时间:2018-04-24 07:45:45

标签: odoo-8 odoo odoo-9

preload = fields.Boolean(related='project_id.preload', string='Preload Templates')

part_template_ids = fields.Many2many(
        'project.part.template', string='Part Templates', required=True,
default='_default_part_template_ids')

  def _default_part_template_ids(self):
        domain = [('case_default', '=', True)]
        return self.env['project.part.template'].search(domain)

我的目标是根据预加载字段更改part_template_ids默认值。如果preload为True,则part_template_ids default ='_ default_part_template_ids'如果preload为false,则part_template_ids的默认值也为false。我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

首先,您必须将默认值添加到preload

preload = fields.Boolean(
    related='project_id.preload', string='Preload Templates',
    default=False)

即使在初始创建时,也会触发onchange事件。您可以使用它来填充其他字段的默认值。

@api.onchange('preload')
@api.multi
def onchange_preload(self):
    """ Preloads part templates if set to true"""
    if self.preload:
        domain = [('case_default', '=', True)]
        self.part_template_ids = self.env['project.part.template'].search(domain)
    else:
        self.part_template_ids = self.env['project.part.template']