如果我将看板卡从一列拖放到另一列(Anylysis 到 On progress),我如何检测到卡已移动?
2 回答
基本上在您的情况下,如果您想在看板卡上添加拖放事件,那么在这种情况下,您必须使用default_group_by="company_id"将一个字段设置为字段分组,如 state 字段或任何 selection 或 many2one 字段
default_group_by主要用于对各个阶段看板卡的分组,类似于对数据库表的 group_by 操作。
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 方法的原因,因为它返回 (object id, object name) 元组的列表。
第二个元素:
将组的值映射到布尔值的字典,指示是否应在看板视图中折叠组。在本词典中不包括组与将其映射为 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
希望我的回答对你有帮助:)
在每个拖放事件中都会调用 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