2012-11-27 69 views
0

我想這一點:的Django的DateField減法

retVal= "" 
dI = models.DateField(date(year=2005, month=11, day=1)) 
dF = models.DateField(date(year=2005, month=11, day=6)) 

diff = dF - dI 

retVal += diff + "message" 

但我發現了這個錯誤

不支持的操作數類型(S) - : '的DateField' 和 '的DateField'

你能幫助我嗎?

+0

您不能減去兩個日期欄。你只能減去它們中的值。 – arulmr

回答

1

你正在做一件很奇怪的事情。你有django模型代碼,它定義了不包含任何值的Field對象。只有實例包含字段值(您正在定義類級別的東西),所以無論你在做什麼都應該放在類方法中。

也許你感到困惑,因爲django的元類魔法將對這些屬性的引用轉換爲數據庫中的python值?

class MyModel(models.Model): 
    foo = models.DateField() 

    print foo # is a models.DateField 

    def get_foo_after_django_magic(self): 
     print self.foo # is a datetime() instance 
0

您可以減去值的Datefiedl即

df = datetime.date(year=2005, month=11, day=1) 
di = datetime.date(year=2005, month=11, day=6) 

您不能直接執行動作的的DateField的

當您嘗試減去兩個Date對象的差異的回報timedelta instanace

>>> df = datetime.date(year=2005, month=11, day=1) 
>>> di = datetime.date(year=2005, month=11, day=6) 
>>> di -d5 
datetime.timedelta(5) 
0

DateFields是不一樣的Python的datetime實例,所以你不能做你正在嘗試做的,因爲DateFields不允許操作。 Raunak提供的答案是正確的。

如果您有一個將DateField作爲屬性的模型,那麼您將會執行類似的操作。

my_object = MyModelWithDateField.object.get(pk=1) 
diff = datetime.today - my_object.some_datefield