Есть ли лучший способ сделать это?
На мой взгляд, я добавил это к записи view.xml:
<field name="arch" type="xml">
<tree string="Test View" js_class="test_view">
<field name="testField" />
</tree>
</field>
У меня есть файл шаблона template.xml, на который я ссылался * manifest.py
<xpath>
<script type="text/javascript" src="/<mymodule>/static/src/js/<mymodule>.js">
</script>
</xpath>
Добавил эту функцию в мою модель:
@api.model
def generate_data(self):
# do stuff on database
pass
У меня в контроллере модуля есть это:
class Reports(http.Controller):
@http.route('/test/refresh', type='json', auth="user")
def refresh(self):
return request.env['model.name'].generate_data()
Затем я расширил базовый ListView в вышеупомянутом .js:
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? Или, может быть, это может помочь кому-то еще.