2016-03-23 3 views
1

Я потратил большую часть последних трех часов поиска, и я просто не могу понять, почему мой код не работает.вычитание полей datetime

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' 

Я, очевидно, получил неправильное форматирование ДФ неправильно, однако, даже глядя на другой решений в stackoverflow, я не могу найти решение моей проблемы.

+2

Просто сторону Примечание: знаете ли вы о 'else:'? Возможно, можно избежать проверки 'self.statuschange_set.exists()' дважды. – lupz

ответ

3

форматирование не имеет смысла, вы можете просто сохранить его как DateTime

return datetime.now() - self.created 

Если вам действительно нужно форматирование, вы должны сделать это после Расчет

df = DateFormat(datetime.now() - self.created) 
... 
return df 
Смежные вопросы