【问题标题】:Odoo 10 Kanban View: Ordering Kanban Items vertically with drag and dropOdoo 10 看板视图:通过拖放垂直订购看板项目
【发布时间】:2023-03-05 23:36:01
【问题描述】:
我想通过拖放在 Odoo 中订购看板项目。我有自己的整数字段 'k_order' 并将此字段用于模型 _order="k_order"。
看板项目根据 k_order 字段正确显示(排序)。但是当我更改顺序(垂直)时,它不会保存它。刷新浏览器后,回到原来的位置。
如何实现上述行为(排序)?我还为字段 k_order 使用了 widget="handel"。
树视图中的这种排序可以根据需要进行。
【问题讨论】:
标签:
sorting
drag-and-drop
odoo
kanban
【解决方案1】:
似乎看板小部件重新排序仅适用于字段sequence,这是odoo模型的默认排序字段。
你可以看到那部分here -> module web_kanban
resequence: function (ids) {
if ((ids.length <= 1) || !this.relation) {
return;
}
new data.DataSet(this, this.relation).resequence(ids).done(function (r) {
if (!r) {
console.warn('Resequence could not be complete. ' +
'Maybe the model does not have a "sequence" field?');
}
});
},
resequence_column: function (col) {
if (_.indexOf(this.fields_keys, 'sequence') > -1) {
this.dataset.resequence(col.get_ids());
}
},
【解决方案2】:
感谢您的提示。我已经做了一个解决方法并在这里发布,因为它可能对其他人有用。我已将“序列”字段映射到我自己的字段“顺序”,其反函数如下;
my_order = fields.Integer(string="My order field", compute='_compute_order', inverse='_inverse_order',store=True )
@api.depends('sequence')
def _compute_order(self):
for rec in self:
rec.my_order =rec.sequence
def _inverse_order(self):
for rec in self:
rec.sequence = rec.my_order