Odoo 10看板视图:通过拖放垂直订购看板项目

时间:2019-12-02 11:30:50

标签: sorting drag-and-drop odoo kanban

我想通过拖放在Odoo中订购看板物品。我有自己的整数字段'k_order',并将此字段用于模型_order =“ k_order”。

看板项根据k_order字段正确显示(排序)。但是,当我(垂直)更改订单时,它不会保存。刷新浏览器后,它将转到旧位置。

如何实现上述行为(排序)?我还对字段k_order使用了widget =“ handel”。

这种在树状视图中的排序可以按需工作。

2 个答案:

答案 0 :(得分:0)

看板窗口小部件重新排序似乎仅与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());
        }
    },

答案 1 :(得分:0)

感谢小费。我已经做了一个变通办法,并在此处发布,因为它可能对其他人有用。我已经将“序列”字段映射到自己的具有“逆函数”的字段“顺序”,如下所示;

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