gpt4 book ai didi

python - Odoo V10 - 计算字段

转载 作者:行者123 更新时间:2023-12-01 01:33:20 25 4
gpt4 key购买 nike

这是我的计算字段:

half_pension_days_value = fields.Integer(string='Day value', copy=False, compute='convert_bin_dec')

这是我的功能:

@api.multi
def convert_bin_dec(self):
if self.half_pension:
print "Je suis dans la fonction convert"
self.half_pension_days_value = 5

遇到的问题:

由于 bool 值 half_pension 的状态,一旦我启动此函数,我的打印就会开始循环。我猜问题出在这一行 -> self.half_pension_days_value = 5

但是为什么呢?

编辑:按顺序

@api.model
def create(self, vals):
record = super(ResPartnerSchool, self).create(vals)
record.convert_bin_dec()
return record


@api.multi
def write(self, vals):
result = super(ResPartnerSchool, self).write(vals)
self.convert_bin_dec()
return result

这是我的错误 -> RuntimeError: 调用 Python 对象时超出了最大递归深度谢谢

最佳答案

您的问题如下:当您执行此操作时,convert_bin_dec() 方法会调用对象的 write() 方法:self.half_pension_days_value = 5 并且 write() 方法再次调用 convert_bin_dec() 方法,因此您进行了递归调用。

要解决此类问题,您必须使用 @api.depends 装饰器。

试试这个:

@api.multi
@api.depends('half_pension')
def convert_bin_dec(self):
for record in self:
if record.half_pension:
print "Je suis dans la fonction convert"
record.half_pension_days_value = 5

不要忘记删除 write()create() 方法中的 self.convert_bin_dec()

关于python - Odoo V10 - 计算字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52606704/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com