2014-03-04 35 views
0

如何將布爾值(或'')解釋爲整數0或1?所以總數可以是0,1或2,這取決於uno和dos的值。models.BooleanField解釋爲整數

class foo(models.Model) 
    uno = models.BooleanField() 
    dos = models.BooleanField() 
    total = models.PositiveSmallIntegerField(blank=True, default=int(0)) 
    def save(self, *args, **kwargs): 
     # HUMDINGER.... 
     self.total = int(self.uno) + int(self.dos) 
     super(Survey, self).save(*args, **kwargs) # Call the "real" save() method. 

這是它拋出該行的錯誤...

invalid literal for int() with base 10: ''

回答

0

我很驚訝,你BooleanFields有空字符串作爲自己的價值。無論如何,因爲布爾在數值上下文評估爲01,你可以做:

self.total = bool(self.uno) + bool(self.dos) 
+0

也許是因爲我使用ModelForms? – broinjc

+0

@broinjc:這很有道理。 'BooleanField'似乎把''''解釋爲'False',所以對我來說一切都很好...... –

+0

是的。我最終創建了一個我的boolfields的臨時列表,用於迭代和總結'if listItem!=''' – broinjc