这里是我的计算字段:
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遇到的问题:
由于布尔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对象时超过了最大递归深度
发布于 2018-10-13 12:29:49
您的问题是:当您这样做时,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()方法中的create()。
发布于 2018-10-06 05:09:45
Hennion
你说过half_pension是你的布尔字段。然后试试下面的代码:
@api.multi
def convert_bin_dec(self):
for rec in self:
if rec.half_pension == True:
print "Je suis dans la fonction convert"
rec.half_pension_days_value = 5or您可以打破您的function.it限制多个条目。
@api.multi
def convert_bin_dec(self):
for rec in self:
if rec.half_pension:
print "Je suis dans la fonction convert"
rec.half_pension_days_value = 5
breakhttps://stackoverflow.com/questions/52606704
复制相似问题