2009-12-20 26 views
0

爲什麼model.diff模板返回18446744073709551615,當模型是這樣和model.pos是0和model.neg是1 ?:Django的 - 簡單的等式

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

回答

0

你得到溢,其中self.pos - self.neg應該給-1,但你有一個積極的領域,所以它包裝,你得到0 - 1 = 18446744073709551615,PositiveIntegerField可表示的最大正數。

供您參考,18446744073709551615 = 2**64 - 1,這意味着PositiveIntegerField存儲64位值。

+0

其實18446744073709551615是=== 2^64-1。 –

+0

heh,就在你離開你的評論時更新了這個。 – Peter

+0

好的,但爲什麼'x = self.pos - self.neg有什麼不同?我的意思是,我是否必須改變字段類型才能使公式起作用?多數民衆贊成有點愚蠢,是不是,因爲X沒有被描述爲變量? –

0

彼得的可能是正確的。嘗試:

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

這應該有所斬斷。

+0

發佈之前,我嘗試過: \t def diff(self): \t \t x = int(self.pos) - int(self.neg ) \t \t return x 這給出了完全相同的結果。 –