我遇到时间模板过滤器问题。
我在models.py
中有一个函数,我想计算下一个类的时间:
time_to = models.TimeField()
def get_time_to_next(self):
return datetime.combine(datetime.today(), self.time_to) - \
datetime.combine(datetime.today(), datetime.time(datetime.now()))
我希望在模板中显示为:
{{ next_classes.get_time_to_next|time:"H:i" }}
但模板没有显示任何内容。从功能开始的时间最长为几小时,而不是几天,几周或几年....
感谢您的回答
答案 0 :(得分:0)
您正在减去两个datetime
,这将导致timedelta
,而time
过滤器不支持这些datetime.today()
。实际上,我认为您只是获得了一个例外,因为datetime
会返回date.today()
而不只是一天(而是使用manage.py shell
)。要确保您的方法不引发异常,请从控制台timedelta
中尝试。
此问题Displaying a timedelta object in Django template似乎提供了显示datetime
的解决方案。但是,您最好从get_time_to_next()
返回{{1}}对象。