Odoo V10 - 计算字段
Odoo V10 - Calculated field
这是我的计算字段:
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 对象时超出了最大递归深度
谢谢
海尼翁,
你说 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 = 5
or
您可以打破 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
break
您的问题如下:当您执行此操作时,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()
。
这是我的计算字段:
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 对象时超出了最大递归深度 谢谢
海尼翁,
你说 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 = 5
or
您可以打破 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
break
您的问题如下:当您执行此操作时,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()
。