python - Odoo 中的 on_change 不起作用

标签 python odoo onchange odoo-8

我有一个包含许多元素的表单。其中之一是 name=evaluation_id 的下拉列表。我正在尝试在 evaluation_id 上创建一个 Odoo on_change( ) 事件,从而表单中的另一个元素 - 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 函数甚至没有加载。

我可以做什么来解决这个问题?你能帮忙的话,我会很高兴!谢谢。

最佳答案

当在字段内进行一些更改时,将触发函数,odoo 中有两个选项可供使用。

@api.onchange

如果装饰器中指定的任何字段在表单中发生更改,则该装饰器将触发对装饰函数的调用。这里范围仅限于同一屏幕/型号。

您可能会在@api.depends和@api.onchange中发现相似之处,但有些区别是onchange的范围仅限于同一屏幕/模型,而@api.depends也适用于其他相关屏幕/模型。

@api.onchange('field')
def onchange_field(self)
    self.deadline= value

@api.depends

这个装饰器专门用于odoo中的“fields.function”。对于“field.function”,您可以计算值并将其存储在一个字段中,其中计算可能取决于同一表或其他表的某些其他字段,在这种情况下您可以使用 @api.depends 来“监视”某个表的字段。

因此,如果装饰器中的任何字段“被 ORM 更改或在表单中更改”,这将触发对装饰函数的调用。

@api.depends('field')
def function_name(self)
    self.deadline = value

欲了解更多信息,Here是描述 Odoo v8 所有 API 的链接。

关于python - Odoo 中的 on_change 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32570103/

相关文章:

python - 更改 Pandas 中的默认选项

xml - 如何在 qweb 报告中输出没有时间的 odoo 8 日期时间字段?

jquery - 将事件绑定(bind)到选定的 select

python - 处理多个IO错误

python - 对具有字符串和数字的 DataFrame 索引进行排序

openerp - Odoo 类差异

postgresql - Odoo 10 - 取消的选股无法删除,为什么?

javascript - 将文本粘贴到文本字段时,onChange 不会在 React 15.1.0 + IE11 中触发

javascript - 使用 JavaScript 中的选择选项 onchange 更改文本区域内容

python - 应用程序不响应 Windows API 事件?