Search code examples
pythondjangoduration

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

Solution

  • 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 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)