不工作的模板过滤器

时间:2014-01-16 17:58:22

标签: django django-templates

我遇到时间模板过滤器问题。 我在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" }}

但模板没有显示任何内容。从功能开始的时间最长为几小时,而不是几天,几周或几年....

感谢您的回答

1 个答案:

答案 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}}对象。