我有一个包含许多元素的表单。其中一个是名称为evaluation_id
的下拉列表。我正在尝试在on_change( )
上创建一个Odoo evaluation_id
事件,其中表单中的另一个元素 - deadline
将使用特定值进行更新。
在我的XML中,我有:
<field name="evaluation_id" string="Appraisal" on_change="onchange_evaluation_id(evaluation_id)"/>
我在Python脚本中有这个
def onchange_evaluation_id(self, cr, uid, ids, evaluation_id, context=None):
return {'value': { 'deadline': 2015}}
以下是hr_evaluation_view.XML脚本的hr_evaluation.PY和摘要的原始代码。
我在这里做错了什么?当我检查网络日志时,我发现on_change函数甚至没有加载。
我该怎么做才能解决这个问题?你能帮忙的话,我会很高兴!感谢。
答案 0 :(得分:3)
当odoo函数内部的某些更改被触发时,odoo中有两个选项可用。
<强> @ api.onchange 强>
如果在窗体中更改了装饰器中指定的任何字段,则此装饰器将触发对装饰函数的调用。此范围仅限于相同的屏幕/模型。
您可以在@ api.depends和@ api.onchange中表示相似之处,但有些不同之处在于onchange的范围仅限于相同的屏幕/模型,而@ api.depends也适用于其他相关的屏幕/模型。
@api.onchange('field')
def onchange_field(self)
self.deadline= value
<强> @ api.depends 强>
这个装饰器专门用于&#34; fields.function&#34;在odoo。对于&#34; field.function&#34;,您可以计算该值并将其存储在一个字段中,在该字段中,计算可能取决于同一个表或某个其他表的某些其他字段,其中您可以使用@api.depends
来保持观看&#39;在一些桌子的领域。
因此,如果装饰器中的任何字段被ORM更改或以“#”形式更改,则会触发对装饰函数的调用。
@api.depends('field')
def function_name(self)
self.deadline = value
有关详细信息,Here是描述Odoo v8所有API的链接。
答案 1 :(得分:1)
这个方法可以写成py文件。如果您只在Odoo-v8中工作,这将有效。
@api.onchange('evaluation_id')
def onchange_evalution_id(self)
self.deadline='2015'