2013-07-24 29 views
0

展望基於另一個字段創建默認情況下,沿着線的東西:在Django中可以默認基於float字段的整數字段嗎?

class Track(models.Model): 
    distance = models.FloatField() 
    timeout = models.PositiveSmallIntegerField(default=int(distance * 2)) 

然而,這將引發TypeError: unsupported operand type(s) for *: 'FloatField' and 'int'

FWIW,我想這無濟於事:

class Track(models.Model): 
    distance = models.FloatField() 
    timeout = models.PositiveSmallIntegerField() 

    def save(self, *args, **kwargs): 
     if (self.timeout is None): 
      self.timeout = int(self.distance * 2) 
      super(Track, self).save(*args, **kwargs) 

但是,被扔TypeError: 'int' object is not iterable

回答

0

Opps,應該更仔細地閱讀堆棧跟蹤,結果發現E題是我的單元測試中的錯誤,而不是實際的代碼:

def test_timeout_defaults_to_twice_distance_when_none(self): 
    Track.objects.create(name='Test Track', distance=10) 
    track = Track.objects.get(1) # Should've been get(id=1) 
    self.assertEqual(20, track.timeout) 

我不會刪除的情況下,這個問題的另一個Python和Django的小白做同樣的事情:)

相關問題