在子模型之前创建模型时抛出“ decimal.DivisionUndefined”错误

时间:2019-04-26 09:54:03

标签: python django django-models

当我尝试创建一个在使用子模型之前创建子模型的模型时,我不断收到错误消息:类'decimal.DivisionUndefined'。我不明白为什么会引发此错误或如何解决该错误。

class Parent(models.Model):
    title = models.CharField(max_length=200, unique=True)
    description = models.TextField()
    sub_value1: DecimalField = models.DecimalField(max_digits=11, decimal_places=2, null=True)

    class Meta:
    @property
    def children(self):
        children = []
        for child in Child.objects.all():
            if child.parent_id == self.id:
                children.append(child)
        return children

    @property
    def main_value(self):
        try:
            main_value = self.sub_value1 / self.sub_value2
            return round(main_value, 2)
        except ZeroDivisionError:
            return 0
        except TypeError:
            return None

    @property
    def sub_value2(self):
        local_sub_value2 = 0
        for child in self.children:
            local_sub_value2 += child.sub_value_2_of_child
        return round(local_sub_value_2, 2)

当我创建尚未创建任何子代的模型时,我希望children属性返回一个空数组。因此sub_value2应该为0,因此main_value应该引发我正在处理的ZeroDivisionError。

但是,我不断从django中收到以下错误消息:

[<class 'decimal.DivisionUndefined'>]

为什么会发生这种情况,我该如何解决?

0 个答案:

没有答案