Python 在加载所有记录并调用字段查看获取函数后,动态触发Odoo字段查看获取

Python 在加载所有记录并调用字段查看获取函数后,动态触发Odoo字段查看获取,python,models,odoo,odoo-10,odoo-view,Python,Models,Odoo,Odoo 10,Odoo View,我想在完成一些函数后动态触发字段\u视图\u get函数。我覆盖函数fields\u view\u get并返回结果。只有在第一次调用实际函数时,才会对XML视图产生影响。因此,我需要刷新视图以在arch上获得影响新值 是否有任何方法可以使odoo视图即使在第一次调用该函数后也使用fields\u view\u get函数进行更改 我的尝试: # here fields view get changes the button string from getting arch # I overri

我想在完成一些函数后动态触发
字段\u视图\u get
函数。我覆盖函数
fields\u view\u get
并返回结果。只有在第一次调用实际函数时,才会对XML视图产生影响。因此,我需要刷新视图以在arch上获得影响新值

是否有任何方法可以使odoo视图即使在第一次调用该函数后也使用
fields\u view\u get
函数进行更改

我的尝试:

# here fields view get changes the button string from getting arch
# I overrided the fields_view_get on event model and its get affected and works
# perfectly when I click on main menu Event.but not after the records loaded.

@api.multi
def send_mail_event(self):
    x = self.event_id.fields_view_get(view_id=None, view_type='form', toolbar=False, submenu=False)
    self.send_mail_event_reg_link(test=True)
    return x

fields\u view\u get
从中的
load\u view
调用,而
load\u view
则由中的web客户端视图管理器调用

现在,请参见
view\u manager.js
中的
load\u视图在哪里以及何时调用。
我们可以看到它被召唤,这是我们感兴趣的召唤

如果您在widget上看到,
将启动
函数。当widget连接到它管理的DOM上时,将调用js。加载dom时,附件只发生一次

因此,总而言之,
fields\u view\u get
在加载页面时运行一次,如果您想再次调用它,您需要从js/web客户端调用
load\u view
javascript函数来执行此操作。


但通常在Odoo中,尽可能避免web客户端扩展。如果您想根据用户的操作对当前视图进行更改,您可以使用
onchange
或任何其他后端挂钩。

能否请您详细说明您尝试实现的功能。只需触发fields\u view\u get功能,但odoo只调用一次,在加载所有数据后,它使用对加载内容的操作,实际上我试图用一些其他数据更改按钮的字符串。但它是唯一一个在重新调整后受到影响的getr。所以我试着调用fields view get。但是它不起作用,你可以添加多个按钮,并根据条件使其可见或不可见。像attrs=“{'invisible':[('show_leaves','=',False)]实际上我在添加数据,也就是说,邮件队列的下一次执行时间是string,你可以通过添加state按钮来完成,因为你必须添加一个字段,并将执行时间写入该特定字段,然后添加state按钮。我从这里解决了我的问题