[已解决]如何修改Odoo默认保存按钮的事件
-
@水在时间之下
我没太懂你的意思好像。你可以参考管理员的意见,他才是大佬,哈哈。
不过可以给你说下write()方法。write()方法是系统的创建记录的时候的那个save按钮对应的方法。
你可以参考https://github.com/odoo/odoo/blob/11.0/odoo/models.py 这个里面的```write()``的方法,这个就是通常保存按钮调用的方法。重写的话不需要继承,只要在你的模型里面定义一个
write()方法就相当于重写了,在这个里面加入自己的业务逻辑就行了。 -
@hui 嗯嗯,好的,谢谢了。可能是我没描述清楚吧,我跟你说下:计算字段a需要依赖一个本模型中的字段b,本模型的字段b变化后会触发计算字段的方法,改变计算字段a的值,这是正常的计算字段的使用。我现在是计算字段要依赖非本模型的字段c,即a和c不在一个模型里面,但是a的值取决于c的值。
我暂时的解决方法是添加一个按钮,通过点击按钮来出发计算的方法(按钮事件里面是可以拿到c的值的),以达到修改a值的目的,这样是可以实现的,然后我想吧按钮省掉,改写默认的按钮的事件来帮我完成计算修改a值。 -
@水在时间之下
不在一个模型里面,计算也是可以依赖的,a字段所在的模型肯定有跟c字段所在的模型关联的吧,计算方法的依赖可以写成这种形式的@api.depends('C.c')。
大C你可以当成是a模型中跟c字段所在模型关联的字段。 -
@水在时间之下
不在一个模型里面,计算也是可以依赖的,a字段所在的模型肯定有跟c字段所在的模型关联的吧,计算方法的依赖可以写成这种形式的@api.depends('C.c')。
大C你可以当成是a模型中跟c字段所在模型关联的字段。 -
@水在时间之下
我说的是这个意思,我这里的字段product_id对应的模型是product.template,下面计算的方法就是依赖模型product.template中的一个字段,这样写的,代码如下,看符合你的要求吗?
@hui 你这里product_id.robot_protection_type_color_id这个字段不是product_template模型中的字段,是在本模型中有这个字段的,我的要求是product_id是一个计算字段,然后它的值依赖于product_template模型中的某个字段。
比如product_template模型中有个is_qualified字段,然后本模型中的product_id字段的值与is_qualified字段有关,那能写成@api.depends('product_template.is_qualified')吗? 本模型与product_template 模型的关系是本模型中有product_template.id -
@水在时间之下
我说的是这个意思,我这里的字段product_id对应的模型是product.template,下面计算的方法就是依赖模型product.template中的一个字段,这样写的,代码如下,看符合你的要求吗?
-
@hui 你这里product_id.robot_protection_type_color_id这个字段不是product_template模型中的字段,是在本模型中有这个字段的,我的要求是product_id是一个计算字段,然后它的值依赖于product_template模型中的某个字段。
比如product_template模型中有个is_qualified字段,然后本模型中的product_id字段的值与is_qualified字段有关,那能写成@api.depends('product_template.is_qualified')吗? 本模型与product_template 模型的关系是本模型中有product_template.id -
我觉得下面这个模型
mxqc.sx.checklist.detail中的计算方法_is_qualified的depends可以写成@api.depends('sx_checklist_id.is_qualified')。你试试 -
我觉得下面这个模型
mxqc.sx.checklist.detail中的计算方法_is_qualified的depends可以写成@api.depends('sx_checklist_id.is_qualified')。你试试 -
下面的写法供你参考,希望有帮助。
@api.depends('sx_checklist_detail_ids.is_qualified') def _is_qualified(self): for checklist in self: if checklist.sx_checklist_detail_ids.filtered(lambda d: d.is_qualified == 'NO'): checklist.is_qualified = 'NO' else: checklist.is_qualified = 'YES' -
下面的写法供你参考,希望有帮助。
@api.depends('sx_checklist_detail_ids.is_qualified') def _is_qualified(self): for checklist in self: if checklist.sx_checklist_detail_ids.filtered(lambda d: d.is_qualified == 'NO'): checklist.is_qualified = 'NO' else: checklist.is_qualified = 'YES' -
下面的写法供你参考,希望有帮助。
@api.depends('sx_checklist_detail_ids.is_qualified') def _is_qualified(self): for checklist in self: if checklist.sx_checklist_detail_ids.filtered(lambda d: d.is_qualified == 'NO'): checklist.is_qualified = 'NO' else: checklist.is_qualified = 'YES'




还是管理员大气,有魄力。