当请求在表单视图中显示记录时,有什么方法可以调用函数吗?
Is there any way to call a function when a record is requested to be shown in a form view?
我想更新在表单视图中显示的每条记录。无论如何要定义某种回调来在显示记录之前更新记录?
我能想到的一种方法是添加一个虚拟字段以形成具有 on_change
属性的视图。但是感觉有点hacky。
您可以使用函数字段。加载表单时以及前后创建新记录时调用函数。
当您创建新记录时,此函数字段将采用 William 的值,保存后值将更改并变为 odedra
这里是 char return 函数类型的例子:
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,
}
注意:
根据您的要求,您可以更改函数字段 return 类型。
使用功能字段似乎很奇怪,但使读取不是幂等的也很不寻常。
我会在表单的 window 操作中设置一个上下文,这样您就可以对其进行测试并限制其影响,然后覆盖新记录的 default_get 方法和读取方法用于您模型上的现有记录。
我想更新在表单视图中显示的每条记录。无论如何要定义某种回调来在显示记录之前更新记录?
我能想到的一种方法是添加一个虚拟字段以形成具有 on_change
属性的视图。但是感觉有点hacky。
您可以使用函数字段。加载表单时以及前后创建新记录时调用函数。
当您创建新记录时,此函数字段将采用 William 的值,保存后值将更改并变为 odedra
这里是 char return 函数类型的例子:
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,
}
注意:
根据您的要求,您可以更改函数字段 return 类型。
使用功能字段似乎很奇怪,但使读取不是幂等的也很不寻常。
我会在表单的 window 操作中设置一个上下文,这样您就可以对其进行测试并限制其影响,然后覆盖新记录的 default_get 方法和读取方法用于您模型上的现有记录。