如何在 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_day
或 monthly
.
我尝试了什么:
将 class 导入我当前的工作 python 代码:from .hr_attendance_policy import hr_overtime_rule
然后我检查了这样的值:value = hr_overtime_rule.buttons
。它以一种扩展的方式工作,它只是停留在一个值上:monthly
创建了一个Many2one
关系字段:button_id = fields.Many2one('hr.overtime.rule')
如果您执行 if not
或 if
它会起作用,但我特别想要 per_day
或 monthly
感谢您的宝贵时间!非常感谢您对此的想法。
你想要做的是根据特定字段的值执行计算,在这种情况下,我可以建议的是在该字段上使用 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 使用反向关键字
当前模型
为了获取所选字段的值,您也可以这样做:
- 找到您当前工作模型与其他模型的关系。
- 找到关系(或创建关系)后,您可以使用相关字段访问它
- 语法应该是这样的:
var = fields.Many2one('your.model')
然后是var2 = fields.Selection(related='var.technical_name')
完成后,您可以使用 if statements
进行检查
我在名为 hr.overtime.rule
的模型上有一个 selection field
,如下所示:
buttons = fields.Selection([('per_day', 'Per Day'), ('monthly', 'Monthly')])
现在我有另一个模型,它应该根据选定的值进行一些计算。逻辑是,当它是 per_day
时,它应该做不同的计算,而当它是 monthly
时,它应该再次做不同的计算,这就是为什么我需要检查 if statement
是否是 per_day
或 monthly
.
我尝试了什么:
将 class 导入我当前的工作 python 代码:
from .hr_attendance_policy import hr_overtime_rule
然后我检查了这样的值:value = hr_overtime_rule.buttons
。它以一种扩展的方式工作,它只是停留在一个值上:monthly
创建了一个
Many2one
关系字段:button_id = fields.Many2one('hr.overtime.rule')
如果您执行if not
或if
它会起作用,但我特别想要per_day
或monthly
感谢您的宝贵时间!非常感谢您对此的想法。
你想要做的是根据特定字段的值执行计算,在这种情况下,我可以建议的是在该字段上使用 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 使用反向关键字
当前模型为了获取所选字段的值,您也可以这样做:
- 找到您当前工作模型与其他模型的关系。
- 找到关系(或创建关系)后,您可以使用相关字段访问它
- 语法应该是这样的:
var = fields.Many2one('your.model')
然后是var2 = fields.Selection(related='var.technical_name')
完成后,您可以使用 if statements