Odoo UI小部件 - 如何从数据库中获取设置?

时间:2016-03-24 23:55:27

标签: openerp odoo-9 odoo-view

我正在编写一个Odoo v9小部件,它根据数据库中的设置和实际的表单字段呈现URL。

我认为数据库中的设置应该存在于ir_config_parameter中。我在我的模块中插入默认值。

在渲染窗口小部件时获取此值的最佳方法是什么?使用

执行异步ajax调用

新模型(" ir.config_parameter")

看起来有点沉重。有没有更好的方法来做到这一点?

感谢。

小工具代码:

    var UrlWidget2 = form_common.FormWidget.extend({
        start: function() {
            this._super();
            this.field_manager.on("field_changed:ref", this, this.display_result);
            this.display_result();
        },
        display_result: function() {
            var ref = this.field_manager.get_field_value("ref");

            if (!ref) return;

            var baseUrl = 'https://example.com'; //this is the value I want to get from the setting in the database. 
            var url = baseUrl + '/foo/' + ref;    

            this.$el.html('<a href="' + url + '" target="portal">View Externally</a><br /><br/>');
        }
    });

1 个答案:

答案 0 :(得分:0)

您可以使用RPC。这是适合我的例子:

var Model = require('web.DataModel'); 

var UrlWidget2 = form_common.FormWidget.extend({
        // just example how to get parameter from backend
        display_result: function() {
            var parameter = new Model('ir.config_parameter');
            // get fields value, key
            parameter.query(['value', 'key'])
                // criteria of search - record with id = 1
                .filter([['id', '=', 1]])
                // only one record
                .limit(1)
                .all()
                .then(function (parameter) {
                    // here data from server
                    console.log(parameter);
            });
        // ...
        }
    });

希望这会对你有所帮助。