私はこの質問を見て、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は float で、warningはデフォルト値のないブール値です。私のフォーム内のツリーには、lowerとupperの両方に事前定義された値がありますが、結果はnull (0.00)であり、塗りつぶされるように設定されています。
機能はうまく機能し、本来の機能を果たします。ただし、実際には 0.0 に等しく、フラグを設定する必要がある結果の問題に直面していますが、フィールド値がデフォルト値の 0.00 から技術的に変更されていないため、 onchange関数 (D'Oh!) を実行できません。何をすべきか?
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になりました