2016-03-23 149 views
1

我已经花了过去3小时搜索的好部分,我似乎无法弄清楚为什么我的代码不起作用。减去日期时间字段

import datetime 
#get time since last status change 
@property 
def last_update(self): 
    if self.statuschange_set.exists(): 
     last_change = self.statuschange_set.all()[0] 
     return last_change.date_changed - self.created 
    #if no status change has occurred, use creation date 
    if not self.statuschange_set.exists(): 
     df = DateFormat(datetime.now()) 
     df = df.format("d/m/Y, P ") 
     return df - self.created 
    return "" 

代码在底部,我想从创建日期减去今天的日期。我测试了它在那里我能减去自身self.created但是上面的代码吐出一个异常值:

Exception Value: 
unsupported operand type(s) for -: 'unicode' and 'datetime.datetime' 

我显然得到了格式化错误DF错误的甚至看其他然而,在stackoverflow解决方案,我无法想出解决我的问题。

+2

就在方注意:你是否知道'else:'?有可能避免检查'self.statuschange_set.exists()'两次。 – lupz

回答

3

的格式是没有意义的,你可以把它作为一个日期时间

return datetime.now() - self.created 

如果你真的需要的格式,你应该后做计算

df = DateFormat(datetime.now() - self.created) 
... 
return df