我知道有timesince
过滤器。
但是我想要一些能够回归的东西:
示例:
我该如何实现这样的目标?
答案 0 :(得分:14)
不确定是否勾选了所有方框,但django.contrib.humanize模板标签中有一个标签 naturaltime 应该这样做:
https://docs.djangoproject.com/en/dev/ref/contrib/humanize/#naturaltime
<强> settings.py 强>
INSTALLED_APPS = {
...
'django.contrib.humanize',
}
<强> template.html 强>
{% load humanize %}
{{ model.timefield|naturaltime }}
答案 1 :(得分:4)
编辑:如果您正在使用最近的Django SVN签出(后1.3),请参阅Pastylegs的答案。否则,您可以执行以下操作:
我为此目的使用repoze.timeago。代码非常简单,因此您可以根据需要对其进行自定义。
这是我创建的名为elapsed
的Django自定义过滤器,它使用了repoze.timeago。
import datetime
from django import template
import repoze.timeago
register = template.Library()
# If you aren't using UTC time everywhere, this line can be used
# to customize repoze.timeago:
repoze.timeago._NOW = datetime.datetime.now
@register.filter(name='elapsed')
def elapsed(timestamp):
"""
This filter accepts a datetime and computes an elapsed time from "now".
The elapsed time is displayed as a "humanized" string.
Examples:
1 minute ago
5 minutes ago
1 hour ago
10 hours ago
1 day ago
7 days ago
"""
return repoze.timeago.get_elapsed(timestamp)
elapsed.is_safe = True