我已经看到了这个问题,并用它在 openerp 中实现了类似的目标。因此我的功能:
def onchange_warning(self, cr, uid, ids, result, lower, upper, context=None):
res={}
flag = False
if result < lower or result > upper:
flag = True
res = {'warning': flag}
return {'value': res}
在我看来,我有:
<field name="result" on_change="onchange_warning(result, lower, upper)"/>
其中result、lower和upper是浮点数,而warning是没有默认值的布尔值。在我的表单内的树中,我为lower和upper预定义了值,而结果为null (0.00)并设置为填充。
该功能运行良好,并完成了它应该做的事情。然而,我面临的结果实际上等于 0.0并且应该设置标志,而onchange函数(D'Oh!)无法执行,因为该字段值在技术上并未从其默认值 0.00 更改。该怎么办?
PS:对不起,标题太糟糕了,请随时改进:)
编辑:
如果有人需要查看函数如何变为:
def onchange_warning(self, cr, uid, ids, result, lower, upper, context=None): res={} flag = False if float(result) < lower or float(result) > upper: flag = True res = {'warning': flag} return {'value': res}
结果现在是fields.char