想实现,添加进来的记录,在此模型其他地方是不能选中 简单来说:就是被选择数据在别的地方不能选择,删除被选择的数据恢复(可以被其他选择) 这就要求对 titanium_id 这个字段监控了,对增加的数据标记,对之前存在现在取消的数据恢复, 针对此情况,在 titanium_id 关联的模型里添加布尔值来控制是否已经被选择 因为考虑到同时有删有减的情况,故不能用 onchange来监控了,就用 create 和 write 来 记录增加的数据和已删除数据,方便对增加的数据和已删除数据 进行标记操作
话不多说,上才艺
atitanium_reduce :数据减少的操作 atitanium_add:数据增加的操作 create 以及 write 的写法一样
def write(self, vals): if 'titanium_id' in vals: atitanium_reduce = list(set(self.titanium_id.ids).difference(set(vals['titanium_id'][0][2]))) atitanium_add = list(set(vals['titanium_id'][0][2]).difference(set(self.titanium_id.ids))) for rec in atitanium_reduce: self.env['production.titanium.blank'].browse(rec).locked = False for rec in atitanium_add: self.env['production.titanium.blank'].browse(rec).locked = True return super(ProductionProductionPlan, self).write(vals)这里也用到了列表的差异性,提取列表之间的不同的元素,