odoo 对man2many的控制

108 篇文章 4 订阅
66 篇文章 4 订阅

想实现,添加进来的记录,在此模型其他地方是不能选中
简单来说:就是被选择数据在别的地方不能选择,删除被选择的数据恢复(可以被其他选择)
这就要求对 titanium_id 这个字段监控了,对增加的数据标记,对之前存在现在取消的数据恢复,
针对此情况,在 titanium_id 关联的模型里添加布尔值来控制是否已经被选择
因为考虑到同时有删有减的情况,故不能用 onchange来监控了,就用 create 和 write 来 记录增加的数据和已删除数据,方便对增加的数据和已删除数据 进行标记操作

话不多说,上才艺

image.png
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)

这里也用到了列表的差异性,提取列表之间的不同的元素,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

隔壁小红馆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值