我正在使用Odoo 10,我正在尝试计算一个字段。计算实际上有效,但我在Odoo中出现错误,必须单击“确定”才能继续。点击“确定”后,错误就是
self.boxes = (self.squaremtr or 0.0) / (self.squarebox or 0.0)
ZeroDivisionError: float division by zero
下面是我在python中的代码
@api.onchange('squaremtr')
def _onchange_boxes(self):
self.boxes = (self.squaremtr or 0.0) / (self.squarebox or 0.0)
答案 0 :(得分:0)
你不能除以零(https://en.wikipedia.org/wiki/Division_by_zero),它没有数学意义。这也意味着您无法执行(self.squarebox or 0.0)
。
您必须检查self.squarebox是否为有效数字并以合理的方式处理它。
答案 1 :(得分:0)
如果它被除零,我们应该采取一些测试用例来处理devision。
尝试使用以下代码:
@api.onchange('squaremtr')
def _onchange_boxes(self):
if self.squaremtr and self.squarebox:
self.boxes = self.squaremtr / self.squarebox
elif self.squaremtr:
self.boxes = self.squaremtr
elif self.squarebox:
self.boxes = self.squarebox
else:
self.boxes = 0.0
答案 2 :(得分:0)
简单的解决方案是:
@api.onchange('squaremtr')
def _onchange_boxes(self):
if self.squaremtr != 0 and self.squarebox != 0:
self.boxes = self.squaremtr / self.squarebox
else:
self.boxes = 0.0