2017-05-04 110 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