对Django的timeuntil输出进行更精细控制吗?

1 投票
2 回答
819 浏览
提问于 2025-04-17 08:13

我现在正在使用timeuntil这个标签来显示某个物品的过期日期。现在它输出的是...

{{rental_till|timeuntill}}

这段代码产生了...

3 months, 1 week

我想知道有没有办法让它只显示月份,比如说?或者能否对输出格式进行更细致的控制,类似于date标签那样。

2 个回答

0

不,timeuntil 这个东西没有任何选项,但你可以很简单地自己创建一个模板标签,基于 timeuntil,让它做你想要的任何事情。可以参考这个链接:https://code.djangoproject.com/browser/django/tags/releases/1.3/django/template/defaultfilters.py(第729行)

3

如果你只想显示月份,可以写一个简单的模板过滤器,这个过滤器会把字符串按逗号分开,然后返回分开后列表里的第一个项目。这个过滤器的代码大概是这样的:

from django.template import Library
register = Library()

@register.filter
def split_timeuntil(duration):
    return duration.split(",")[0]

然后在你的模板中使用:{{rental_till|timeuntil|split_timeuntil}}

不过,timeuntil 这个过滤器的格式化方式和 date 不太一样。你可以很简单地创建一个自定义过滤器,返回你想要的格式,只需要复制 timeutil 的代码,分别在 django/template/defaultfilters.pydjango/utils/timesince.py 中找到就可以了。

撰写回答