因圈内朋友需求,某个字段的值是通过后台py方法获取,业务逻辑是写在该字段的onchange方法中,前台操作时,默认只有该字段值发生改变时才会触发后台方法,现在他希望前台js能定时触发该字段的onchange事件,调用后台方法返回值。
经过分析odoo的onchange触发机制及工作流程,写了一个模块,可以方便开发人员处理该类型的业务需求。
安装该模块后,针对需处理的字段定义一个onchange方法,如下所示。
class test(models.Model):
_inherit = "res.partner"
test_time = fields.Datetime("Test Time")
@api.onchange("test_time")
def _onchange_test_time(self):
self.test_time = fields.Datetime.now()
然后在view定义中加入如下所示内容,interval表示毫秒时间间隔.
<record id="vnsoft_test_res_prtner_form_view" model="ir.ui.view">
<field name="name">vnsoft.test.res.partner.form.view</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="base.view_partner_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='category_id']" position="after">