如何检测odoo中看板视图的拖放事件?

how to detect the drag and drop event of kanban view in odoo?

如果我将看板卡从一列拖放到另一列(分析到进度),我如何检测到卡已移动?

基本上在你的情况下如果你想在你的看板卡上添加拖放事件所以在这种情况下你必须设置一个字段作为字段分组如状态字段或任何选择或many2one字段 使用 default_group_by="company_id"

default_group_by主要用于各阶段看板卡的分组 与数据库 table.

上的 group_by 操作相似

default_group_by :

如果没有通过操作或当前研究指定分组,看板视图是否应该分组。当没有指定分组时,应该是分组依据的字段名称。

潜在问题:

但是有一个潜在的问题。表示没有任何项目的组的列将不包括在内。这意味着用户将无法将项目移动到那些缺席的组,这可能不是我们想要的。

Odoo 对此有一个现成的答案 - 一个名为 _group_by_full 的可选模型属性。

_group_by_已满:

它应该是一个字典,将(您用于分组的字段的)字段名称映射到方法return关于这些字段的所有可用组的信息。

class Store(models.Model):
    @api.model
    def company_groups(self, present_ids, domain, **kwargs):
        companies = self.env['res.company'].search([]).name_get()
        return companies, None

    _name = 'store'
    _group_by_full = {
        'company_id': company_groups,
    }

    name = fields.Char()
    company_id = fields.Many2many('res.company')

上面的代码确保在显示按 company_id 分组的商店对象时,将显示所有可用的公司(而不仅仅是那些已经拥有商店的公司)。

上面的代码确保在显示按 company_id 分组的商店对象时,将显示所有可用的公司(而不仅仅是那些已经拥有商店的公司)。

_group_by_full 是 return 一个二元组:

第一个元素:

两个元素元组的列表,代表各个组。列表中的每个元组都需要包含特定组的值(在我们的示例中:特定公司的 ID)和该组的用户友好名称(在我们的示例中:公司名称)。这就是我们可以使用 name_get 方法的原因,因为它 return 是一个(对象 ID,对象名称)元组列表。

第二个元素:

一个字典,将组的值映射到一个布尔值,指示该组是否应该在看板视图中折叠。不将某个组包含在该词典中与将其映射到 False 具有相同的含义。

例如:

此版本的 company_groups 方法会在看板视图中创建一个代表 ID 为 1 的公司的组:

您还可以参考 crm 模块以更好地理解 crm.lead 模型,因为它是 stage_id 字段的看板记录分组的一个很好的例子。

参考下面post:

https://www.odoo.com/documentation/8.0/reference/views.html#kanban

http://ludwiktrammer.github.io/odoo/odoo-grouping-kanban-view-empty.html

希望我的回答对您有所帮助:)

在每次拖放事件中 set_record() 将被调用

set_record: function(record) {
    var self = this;
    this.id = record.id;
    this.values = {};
    _.each(record, function(v, k) {
        self.values[k] = {
            value: v
        };
    });
    this.record = this.transform_record(record);
},

来源:https://github.com/odoo/odoo/blob/8.0/addons/web_kanban/static/src/js/kanban.js#L894