我希望能够以编程方式更改one2many字段(work_unit
)的上下文,以修改其一个字段(product_id
)的默认值。
理想情况下,我想直接从我的小部件中更改o2m上下文,但是这样做没有任何成功,该视图无法确认我对javascript所做的任何更改。
当前方法:我有另一个字段selected_chapter
,我将上下文作为work_unit.product_id
的默认值传递。效果很好:当我手动更改selected_chapter
时,o2m上下文将为字段product_id
选择新的默认值。
现在,我希望能够通过JavaScript中的小部件以编程方式修改selected_chapter
。
我通过从Widget调用_rpc()来调用python方法来做到这一点,并且它可以工作,但是在保存记录之前,视图不会更新selected_chapter
,这使调用的目的无效。
小部件代码:
ListRenderer.include({
...
_setSelectedChapter: function () {
var self = this;
this.trigger_up('mutexify', {
action: function () {
return self._rpc({
model: 'sale.order',
method: 'set_selected_chapter',
args: [
[self.res_id]
],
kwargs: {
chapter_id: self.filter.getSelected()
},
}).then(function (result) {
console.log("res", result);
self._render();
});
},
});
},
...
})
型号代码:
selected_chapter = fields.Many2one('product.product')
@api.multi
def set_selected_chapter(self, chapter_id):
chapter = self.env['product.product'].browse(chapter_id)
if not chapter.exists():
return
# I've also tried using self.update(), same results
self.selected_chapter = chapter
查看代码:
<field name="work_unit" mode="tree,kanban" filter_field="product_id" context="{'default_product_id': selected_chapter}">
答案 0 :(得分:0)
首先,将import (
"k8s.io/apimachinery/pkg/labels"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
func ListPod(labelSelector metav1.LabelSelector) {
labelMap := metav1.LabelSelectorAsMap(labelSelector)
options := metav1.ListOptions{
LabelSelector: labels.SelectorFromSet(labelMap).String(),
}
podList, err := clientset.CoreV1().Pods("<namespace>").List(options)
}
重命名为work_unit
。
然后,在服务器端编写一个work_unit_ids
方法。参见https://www.odoo.com/documentation/12.0/reference/orm.html#onchange-updating-ui-on-the-fly