A solução humanizar é boa se o seu site estiver em inglês. Para outros idiomas, você precisa de outra solução: eu recomendo usar o Babel . Uma solução é criar uma tag de modelo personalizada para exibir os números corretamente. Veja como: basta criar o seguinte arquivo em your_project/your_app/templatetags/sexify.py
:
# -*- coding: utf-8 -*-
from django import template
from django.utils.translation import to_locale, get_language
from babel.numbers import format_number
register = template.Library()
def sexy_number(context, number, locale = None):
if locale is None:
locale = to_locale(get_language())
return format_number(number, locale = locale)
register.simple_tag(takes_context=True)(sexy_number)
Em seguida, você pode usar essa tag de modelo nos seus modelos assim:
{% load sexy_number from sexify %}
{% sexy_number 1234.56 %}
- Para um usuário americano (localidade en_US), isso exibe 1.234,56.
- Para um usuário francês (código do idioma fr_FR), isso exibe 1 234,56.
- ...
Claro que você pode usar variáveis:
{% sexy_number some_variable %}
Nota: o context
parâmetro atualmente não é usado no meu exemplo, mas eu o coloco lá para mostrar que você pode facilmente ajustar essa tag de modelo para usá-la com qualquer coisa que esteja no contexto do modelo.