Display and format Django DurationField in template

Im using Django 1.8, and i have one of my field defined as DurationField, but i dont find any way to correctly display it on my template, if i output it like this:

{{runtime}}
i just get 0:00:00.007980

is there any filter or any other way of displaying something more like

2hours 30 min

Best answer

No, I don’t think there is any built in filter to format a timedelta, it should be fairly easy to write one yourself though.

Here is a basic (and untested) example:

from django import template


register = template.Library()


@register.filter
def duration(td):
    total_seconds = int(td.total_seconds())
    hours = total_seconds // 3600
    minutes = (total_seconds % 3600) // 60

    return '{} hours {} min'.format(hours, minutes)