django - 简单方程

时间:2009-12-20 21:20:56

标签: django math django-models

为什么model.diff在模板中返回18446744073709551615,当模型是这样的,model.pos是0而model.neg是1?:

class Kaart(models.Model):
    neg = models.PositiveIntegerField(default=0)
    pos = models.PositiveIntegerField(default=0)
    def diff(self):
        return self.pos - self.neg

2 个答案:

答案 0 :(得分:0)

你正在获得下溢,self.pos - self.neg应该给-1,但你有一个正数字段,所以它包围了你得到0 - 1 = 18446744073709551615,这是PositiveIntegerField可以表示的最大正数

供您参考18446744073709551615 = 2**64 - 1,这意味着PositiveIntegerField存储64位值。

答案 1 :(得分:0)

彼得可能是对的。尝试:

def diff(self):
    return int(self.pos) - int(self.neg)

这应该可以解决问题。