Skip to content

Instantly share code, notes, and snippets.

@dnmellen
Last active July 26, 2022 10:43
Show Gist options
  • Save dnmellen/bfc1b3005999aaff3ed4 to your computer and use it in GitHub Desktop.
Save dnmellen/bfc1b3005999aaff3ed4 to your computer and use it in GitHub Desktop.
Adds @danielafcarey fix
from django import template
register = template.Library()
@register.filter
def cool_number(value, num_decimals=2):
"""
Django template filter to convert regular numbers to a
cool format (ie: 2K, 434.4K, 33M...)
:param value: number
:param num_decimals: Number of decimal digits
"""
int_value = int(value)
formatted_number = '{{:.{}f}}'.format(num_decimals)
if int_value < 1000:
return str(int_value)
elif int_value < 1000000:
return formatted_number.format(int_value/1000.0).rstrip('0').rstrip('.') + 'K'
else:
return formatted_number.format(int_value/1000000.0).rstrip('0').rstrip('.') + 'M'
@IamMiracleAlex
Copy link

@dnmellen Thank you for this awesome piece!
@danielafcarey Thank you for the correction, it was really helpful!

@dantechplc
Copy link

Please how do I use it in my template? Thanks

@dnmellen
Copy link
Author

@danielafcarey Thanks for your correction!

@dantechplc Checkout Django's docs about custom filters (https://docs.djangoproject.com/en/3.2/howto/custom-template-tags/). You need to add this file inside templatetags folder within your django app directory as it says in the docs. After that you can load that custom filter in your template and use it:

{% load numbers %}

...

{{ yourvar|cool_number }}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment