2017-05-04 2 views
0

나는 Odoo 10을 사용하고 있으며 필드를 계산하려고합니다. 계산은 실제로 작동하지만 Odoo에서 오류가 발생하고 계속하려면 확인을 클릭해야합니다. 내가 확인을 클릭하면이 오류가 아래Odoo ZeroDivisionError : 0으로 플로트 나누기

self.boxes = (self.squaremtr or 0.0)/(self.squarebox or 0.0) 
ZeroDivisionError: float division by zero 

파이썬

@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

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