我有一个带有两个TimeFields的模型。我想在模板中显示时差(即27分钟)。我看到了过滤器的时间,但它不起作用;我认为它只接受日期时间,但我的模型只存储了时间。
对@HAL的回应:
'datetime.time' object has no attribute 'year'
Exception Location: C:\Python27\lib\site-packages\django\utils\timesince.py in timesince, line 32
答案 0 :(得分:14)
您可以使用timesince模板标记。
答案 1 :(得分:3)
如果您知道相应的日期和时区,则只能比较两个时间戳。datetime.time
类仅包含时间。我强烈建议您在这种情况下考虑使用DateTimeField
(使用datetime.datetime
)。
如果您确定两个datetime.time
个对象具有相同的日期和时区,那么您可以像这样向模型添加方法:
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
此处使用任意日期将时间值升级为日期时间值。您可以从模板中调用{{ obj.get_time_diff }}
。