【问题标题】:onchange functions on boolean fields in odoo 8odoo 8中布尔字段的onchange函数
【发布时间】:2015-10-12 12:18:07
【问题描述】:

我想知道 onchange 函数如何处理布尔和整数字段。 假设如果一个布尔字段更改为 True,则相应整数的值也应更改。

提前致谢。

【问题讨论】:

    标签: python xml odoo


    【解决方案1】:

    @api.onchange

    如果装饰器中指定的任何字段在表单中发生更改,此装饰器将触发对装饰函数的调用:

    @api.onchange('fieldx')
    def do_stuff(self):
       if self.fieldx == x:
           self.fieldy = 'toto'
    

    在前面的示例中,self 对应于当前在表单上编辑的记录。在 on_change 上下文中,所有工作都在缓存中完成。所以你可以在你的函数中改变 RecordSet 而不必担心改变数据库。这是与@api.depends 的主要区别

    函数返回时,缓存和RecordSet的差异会返回到表单中。

    查看管理

    新 API 的一大改进是 onchange 会以简单的方式自动插入到表单中。您不必再担心修改视图。

    警告和域

    要更改域或发送警告,只需返回常用字典即可​​。注意不要在这种情况下使用@api.one,因为它会破坏字典(将它放在一个列表中,Web 客户端不支持)。

    【讨论】: