View 如何在Odoo 11/12中接收数据后刷新视图

View 如何在Odoo 11/12中接收数据后刷新视图,view,refresh,odoo,View,Refresh,Odoo,有更好的方法吗 在我看来,我将此添加到record view.xml中: <field name="arch" type="xml"> <tree string="Test View" js_class="test_view"> <field name="testField" /> </tree> </field> 我的模块控制器中有: class Reports(http.Controller): @http

有更好的方法吗

在我看来,我将此添加到record view.xml中:

<field name="arch" type="xml">
  <tree string="Test View" js_class="test_view">
    <field name="testField" />
  </tree>
</field>
我的模块控制器中有:

class Reports(http.Controller):
    @http.route('/test/refresh', type='json', auth="user")
    def refresh(self):
        return request.env['model.name'].generate_data()
然后,我在上述.js中扩展了基本ListView:

odoo.define('<mymodule>.updateview, function (require) {

  var view_registery = require('web.view_registry');
  var ListController = require('web.ListController');
  var ListView = require('web.ListView');

  var TestListController = ListController.extend({
    init: function () {
      this._super.apply(this, arguments);
            var self = this;
            this._rpc({
                route: '/test/refresh'
            }).then(function() {
                self.reload();
            });

    }
  });


  var ReportListView = ListView.extend({
      config: _.extend({}, ListView.prototype.config, {
          Controller: TestListController 
       }),
   });
  view_registery.add('test_view')
});
odoo.define('.updateview,函数(require){
var view_registry=require('web.view_registry');
var ListController=require('web.ListController');
var ListView=require('web.ListView');
var TestListController=ListController.extend({
init:函数(){
这个._super.apply(这个,参数);
var self=这个;
这个({
路由:'/test/refresh'
}).然后(函数(){
self.reload();
});
}
});
var ReportListView=ListView.extend({
配置:u2;.extend({},ListView.prototype.config{
控制器:TestListController
}),
});
查看注册表项。添加('test\u view')
});

这一切都可以很好地加载页面。有没有奥多推荐的更好的方法?或者这可以帮助其他人。

我认为您可以使用odoo客户端操作重新加载视图,作为python函数的返回:

@api.model
def generate_data(self):
  # do stuff on database
  (...)
  return {
    'type': 'ir.actions.client',
    'tag': 'reload',
  }

我认为您可以使用一个odoo客户端操作来重新加载视图,作为python函数的返回:

@api.model
def generate_data(self):
  # do stuff on database
  (...)
  return {
    'type': 'ir.actions.client',
    'tag': 'reload',
  }

您希望在记录中生成哪些数据?是否没有办法使用Odoo的默认功能(如默认值)来实现您的需求?您实际上想要实现什么?如果我们知道您的目标是什么,我们会更容易提供帮助。您希望在记录中生成哪些数据?是否没有办法使用Odoo的默认功能(如默认值)来实现您的需求?您实际上想要实现什么?如果我们知道你的目标是什么,帮助你会更容易。
@api.model
def generate_data(self):
  # do stuff on database
  (...)
  return {
    'type': 'ir.actions.client',
    'tag': 'reload',
  }