客户端网站 - 如何随时获取当前记录ID

时间:2012-06-22 07:19:09

标签: api web openerp

我正在努力研究"different permissions based on workflow state"问题,但我正在努力解决这样一个事实,即为了得到这个问题似乎无法在任何时候得到当前对象的id'该对象的许可。我的意思是我设法从客户端状态following jquery bbq docs获取它,如:

$.bbq.getState().id

但是看起来只有在完整页面加载后才可行。我通过在主视图事件中放置一些警报来调查这一点,例如:

openerp.web.PageView = openerp.web.PageView.extend({
    on_loaded: function(data) {
        this._super(data);
        alert('page load ' + $.bbq.getState().id);
    },
    do_show: function() {
        this._super();
        alert('page show ' + $.bbq.getState().id);
    },
    reload: function() {
        this._super();
        alert('page reload ' + $.bbq.getState().id);
    },
    on_record_loaded: function(record) {
        this._super(record);
        alert('record loaded ' + $.bbq.getState().id);
    }
});

我发现当您打开页面视图时(例如,通过点击搜索视图中的项目),您将始终“未定义”。

然后,当使用分页导航从一个对象传递到另一个对象时,你会把它变成“reload”和“on_record_loaded”。然后,当您单击“编辑”按钮时,再次错过它。

在表单视图中,我只在第一次加载时成功获得,因为似乎某些缓存就位。那么,如果我将一个pdb放入web客户端的fields_view_get中,我将其转换为“init_view”形式:

var ids = [];
if ($.bbq.getState().id){
    ids = [parseInt($.bbq.getState().id)];
}
console.log(ids);
return this.rpc("/web/view/load", {
    "model": this.model,
    "view_id": this.view_id,
    "view_type": "form",
    toolbar: this.options.sidebar,
    context: context,
    ids: ids,
    }, this.on_loaded);

我只是第一次加载页面。如果我从

中取出ID,也会发生同样的情况
this.dataset.ids

我看了核心网络模块的任何地方,我找不到合适的API,看起来很奇怪(首先是数据集),我们没有正确的方法来获取/处理当前记录/秒。甚至上下文和会话都没有任何相关信息。

可能我应该在第一次加载时将它存储到视图中......

提前感谢任何指示。

2 个答案:

答案 0 :(得分:1)

尝试:

this.view.datarecord.id

表格视图中的OpenERP 7: 使用谷歌浏览器调试

答案 1 :(得分:0)

尝试

的组合

this.dataset.idsthis.dataset.index

curr_id = this.dataset.ids[this.dataset.index]

这可能会解决您的问题。