【问题标题】:on_change in Odoo not workingOdoo 中的 on_change 不起作用
【发布时间】:2015-09-14 17:02:45
【问题描述】:

我有一个包含许多元素的表单。其中之一是名称=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.XMLhr_evaluation.PY 脚本的sn-p 的原始代码。

我在这里做错了什么?当我检查网络日志时,我发现函数 on_change 甚至没有加载。

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

【问题讨论】:

    标签: python openerp onchange odoo odoo-8


    【解决方案1】:

    当触发功能时在字段内部进行的某些更改时,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”,您可以计算该值并将其存储在一个字段中,其中计算可能取决于同一表或其他表的某些其他字段,在这种情况下您可以使用 @ 987654323@ 在某个表的字段上保持“监视”。

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

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

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

    【讨论】:

      【解决方案2】:

      这个方法可以写入py文件。如果您仅在 Odoo-v8 中工作,这将有效。

      @api.onchange('evaluation_id')
      def onchange_evalution_id(self)
          self.deadline='2015'
      

      【讨论】:

        猜你喜欢
        • 2014-12-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-22
        相关资源
        最近更新 更多