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

时间:2016-02-11 05:35:30

标签: python xml odoo-8 kanban

Kanban view and kanban cards

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

2 个答案:

答案 0 :(得分:1)

基本上在您的情况下如果您想在看板卡上添加拖放事件,那么在这种情况下,您必须设置一个字段,如字段分组,如州字段或任何选择或many2one字段 使用 default_group_by =“company_id”

default_group_by 主要用于在每个舞台上对看板卡进行分组 simmilarity as dat_by operation on datbase table。

default_group_by:

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

潜在问题:

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

Odoo有一个准备好的答案 - 一个名为_group_by_full的可选模型属性。

_group_by_full:

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

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返回一个两元素元组:

第一个元素:

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

第二个要素:

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

例如:

这个版本的company_groups方法会使一个代表公司ID为1的公司在看板视图中折叠:

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

请参阅以下帖子:

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

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

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

答案 1 :(得分:1)

在每次拖放事件中,都会调用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);
},

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