如何在 odoo 中获取选择字段值?

How do I get selection field value in odoo?

我在名为 hr.overtime.rule 的模型上有一个 selection field,如下所示:

buttons = fields.Selection([('per_day', 'Per Day'), ('monthly', 'Monthly')])

现在我有另一个模型,它应该根据选定的值进行一些计算。逻辑是,当它是 per_day 时,它应该做不同的计算,而当它是 monthly 时,它应该再次做不同的计算,这就是为什么我需要检查 if statement 是否是 per_daymonthly.

我尝试了什么:

感谢您的宝贵时间!非常感谢您对此的想法。

你想要做的是根据特定字段的值执行计算,在这种情况下,我可以建议的是在该字段上使用 onchange 函数:

示例:

#better rename to hr_overtime_rule_id
button_id = fields.Many2one('hr.overtime.rule')

@api.onchange('button_id')
def onchange_button_id(self):
    if self.button_id.buttons == 'per_day':
        computations1()
    if self.button_id.buttons == 'monthly':
        computations2()

确保你的字段抓取对象,否则你可能需要在原始模型中定义一个新的 One2many 字段,以 link 使用反向关键字

当前模型

为了获取所选字段的值,您也可以这样做:

  1. 找到您当前工作模型与其他模型的关系。
  2. 找到关系(或创建关系)后,您可以使用相关字段访问它
  3. 语法应该是这样的:var = fields.Many2one('your.model')然后是var2 = fields.Selection(related='var.technical_name')

完成后,您可以使用 if statements

进行检查