2017-05-04 97 views
0

我正在使用Odoo 10,我试图计算一个字段。计算实际上可行,但我在Odoo中遇到错误,必须单击“确定”继续。当我点击确定它的工作原理误差Odoo ZeroDivisionError:浮点除以零

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

你不能除以零(https://en.wikipedia.org/wiki/Division_by_zero),它不会使数学意义上的代码。这也意味着你不能做(self.squarebox or 0.0)

你必须检查self.squarebox是否是一个有效的数字,并以一些合理的方式处理它。

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 
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