我正在尝试根据用户在表单上完成的amountPay
和interestType
字段来计算付款的利息。当用户点击提交时,我需要在兴趣字段中插入,请说amountPay * 0.05
。
问题在于interest
是function field
并且它会搜索当前amountPay
和interestType
记录的值,但它会失败,因为这些值没有已经保存了。
我注意到如果在保存后我编辑了字段并再次保存,那么我就得到了正确的兴趣。
有什么方法可以通过点击提交1次来实现动态
非常感谢任何正确方向的提示,谢谢!
答案 0 :(得分:1)
如果我理解正确,您可以在表单上将amountPay和interestType字段作为输入字段。如果兴趣是一个功能字段,那么每次显示表单时(加载后,保存等),都会显示计算的功能字段值,但您可以使用on_change来执行您需要的操作。
在amountPay和interestType字段中添加on_change。这可以调用传递这两个字段的相同on_change方法。
在on_change方法中,计算正确的兴趣并将其返回。
def on_change_interest_fields(self, cr, uid, ids, amountPay, interestType, context):
interest = amountPay * 0.5
return {'value': {'interest': interest,},}
虽然兴趣字段是只读功能字段,但表单中保存的值将更改为值字典中返回的值。然后,当使用保存或重新加载表单时,将正确计算和显示功能字段。此方法的唯一缺点是您正在复制功能字段使用的逻辑。要解决这个问题,请将函数字段调用的方法中的逻辑拉出到可以从函数字段方法和on_change方法调用的单独方法中。
最后一点小点,记住python不是java。要遵循PEP008和OpenERP惯例,您的字段应为amount_pay和interest_type。