Поскольку фильтр timesince не принимает никаких аргументов, вам придется вручную убрать часы с даты.
Вот пользовательский шаблонный фильтр , который вы можете использовать для удаления минут, секунд и микросекунд из вашего объекта datetime:
#this should be at the top of your custom template tags file
from django.template import Library, Node, TemplateSyntaxError
register = Library()
#custom template filter - place this in your custom template tags file
@register.filter
def only_hours(value):
"""
Filter - removes the minutes, seconds, and milliseconds from a datetime
Example usage in template:
{{ my_datetime|only_hours|timesince }}
This would show the hours in my_datetime without showing the minutes or seconds.
"""
#replace returns a new object instead of modifying in place
return value.replace(minute=0, second=0, microsecond=0)
Если вы ранее не использовали пользовательский шаблонный фильтр или тег, вам нужно будет создать каталог в вашем приложении django (т.е. на том же уровне, что и models.py и views.py) с именем templatetags
, и создать файл внутри него называется __init__.py
(это делает стандартный модуль Python).
Затем создайте внутри него исходный файл Python, например my_tags.py
, и вставьте в него пример кода выше. Внутри вашего представления используйте {% load my_tags %}
, чтобы получить Django для загрузки ваших тегов, а затем вы можете использовать вышеупомянутый фильтр, как показано в документации выше.