2010-02-16 8 views
9

Mon modèle renvoie un nombre décimal (1234567.50), je n'arrive pas à afficher le décimal avec un séparateur de milliers. Est-ce que Django a un moyen de faire ça? Ai-je besoin de créer mon propre filtre de modèle?Django séparer les milliers dans le modèle

Merci.

Répondre

20

Vous pouvez utiliser le filtre intcomma, mais je ne pense pas que cela fonctionnera sur des objets Decimal et il fonctionne sur les objets décimaux. Vous devrez d'abord convertir en float/string.

+1

intcomma fonctionne très bien avec Objets décimaux –

+0

Oui cela a fonctionné avec l'objet Decimal Merci – mhost

+0

Je ne savais pas que cela fonctionnait sur les objets Decimal – sykora

3

Un moyen facile est d'importer locale et de faire le formatage dans votre fonction d'affichage.

Encore plus facile à lire ceci: http://docs.djangoproject.com/en/dev/topics/i18n/#overview

Pour la localisation de format, il est juste nécessaire de régler USE_L10N = True dans votre fichier de paramètres. Si USE_L10N est défini sur à True, Django affichera les numéros et les dates au format de l'environnement local actuel. Cela inclut le champ représentation sur les modèles, et formats d'entrée autorisés sur l'admin.

+4

Django 1.2 possède maintenant une variable USE_THOUSAND_SEPARATOR que vous pouvez définir dans settings.py. Voir http://docs.djangoproject.com/en/dev/ref/settings/?from=olddocs#use-thousand-separator. Cette approche était beaucoup plus facile que d'utiliser le filtre intcomma. Une fois que j'ai défini à la fois USE_L10N et USE_THOUSAND_SEPARATOR sur True, les nombres que je voulais afficher avec des séparateurs de milliers commençaient tout juste à fonctionner automatiquement, aucun changement de modèle n'étant nécessaire. Mise à jour: cette méthode semble fonctionner avec ints mais pas longue :( – Eddified

+0

Que se passe-t-il lorsque 'USE_L10N' ne fonctionne pas comme ici http://stackoverflow.com/questions/7918523/django-localisation – Sevenearths