我希望在表单视图中显示时更新每条记录。无论如何都要定义某种回调以在显示之前更新记录吗?
我能想到的一种方法是添加一个虚拟字段来形成具有on_change
属性的视图。但感觉有点像哈克。
答案 0 :(得分:2)
您可以使用功能字段。在表单加载时以及在创建新记录之前和之后调用函数。
创建新记录时,此功能字段将作为 William 取值,保存后值将更改并变为 odedra
以下是 char 返回函数类型的示例:
def _default_get(self, cr, uid, context=None):
print " This function called before new record create "
res = 'William'
return res
def _set_value(self, cr, uid, ids, name, args, context=None):
print " This function called at time of saving record and form view load "
res = {}
for i in self.browse(cr, uid, ids, context=context):
res[i.id] = 'odedra'
return res
_columns = {
'value': fields.function(_set_value, type='char', string='Value'),
}
_defaults = {
'value': _default_get,
}
注:的
根据您的要求,您可以更改功能字段返回类型。
答案 1 :(得分:0)
使用函数字段似乎很奇怪但是然后使读取不是幂等的也是不寻常的。
我会在表单的窗口操作中设置一个上下文,以便您可以对其进行测试并限制其效果,然后覆盖新记录的default_get方法和模型上现有记录的read方法。