2014-02-14 3 views
1

두 개의 TimeField가있는 모델이 있습니다. 나는 템플릿 (즉, 27 분)에서 시차를 보여주고 싶다. 필터 timesince가 보이지만 작동하지 않습니다. 나는 그것이 단지 datetimes를 받아 들일 만하지만 내 모델은 시간을 저장했다고 생각합니다. @HAL에장고 템플릿의 시차를 어떻게 계산합니까?

응답 :

'datetime.time' object has no attribute 'year' 
Exception Location: C:\Python27\lib\site-packages\django\utils\timesince.py in timesince, line 32 
+0

어떤 종류의 오류가 발생합니까? 덕분에 – HAL

답변

3

해당 날짜와 시간대를 알고있는 경우에만 두 개의 타임 스탬프를 비교할 수 있습니다. datetime.time 클래스에는 시간 만 들어 있습니다. 이 경우에는 DateTimeField (datetime.datetime을 사용)을 사용하는 것이 좋습니다.

다음
import datetime 
from django.utils.timesince import timesince 

class MyModel(models.Model): 
... 

    def get_time_diff(self): 
     dummydate = datetime.date(2000,1,1) # Needed to convert time to a datetime object 
     dt1 = datetime.combine(dummydate,self.t1) 
     dt2 = datetime.combine(dummydate,self.t2) 
     return timesince(dt1, dt2) # Assuming dt2 is the more recent time 

시간 가치가를 사용하여 날짜 시간 값으로 업그레이드 : 둘 다 datetime.time 객체가 같은 날짜와 시간대가있는 다음과 같은 모델에 메서드를 추가 할 수 있는지 확인하는 경우

임의의 날짜. 템플리트에서 {{ obj.get_time_diff }}으로 호출 할 수 있습니다.

+0

. 나는 당신의 대답에서 수입 라인을 바로 잡았습니다. 다른 사람들을 위해, 나는 timesince를 흉내내는 커스텀 템플리트 필터에서이 코드를 사용하여 모든 시간 객체에 대해 일반적으로 사용할 수 있습니다. – rsp

10

당신은 timesince 템플릿 태그를 사용할 수 있습니다.

관련 문제