2010-02-16 13 views
9

Mein Modell gibt eine Dezimalzahl (1234567.50) zurück, ich kann nicht scheinen, das Dezimaltrennzeichen mit einem Tausendertrennzeichen anzuzeigen. Hat Django eine Möglichkeit dies zu tun? Muss ich meinen eigenen Vorlagenfilter erstellen?Django trennen Tausende in Vorlage

Danke.

Antwort

20

Sie können die intcomma Filter, aber ich glaube nicht, es auf Dezimal Objekte funktioniert und es funktioniert auf Dezimal-Objekten. Sie müssen zuerst in Float/String konvertieren.

+1

intcomma funktioniert gut mit Dezimal-Objekte –

+0

Ja, es funktioniert mit dem Dezimal-Objekt Danke – mhost

+0

Ich wusste nicht, dass es an Dezimal-Objekten funktioniert. Aktualisiert die Antwort. – sykora

3

Ein einfacher Weg ist, locale zu importieren und die Formatierung in Ihrer Ansichtsfunktion durchzuführen.

Noch einfacher, dies zu lesen:

Für Format Lokalisierung http://docs.djangoproject.com/en/dev/topics/i18n/#overview, es ist nur notwendig USE_L10N = True in Ihre Einstellungsdatei einzustellen. Wenn USE_L10N auf auf True gesetzt ist, zeigt Django die Nummern und die Daten im Format der aktuellen Ländereinstellung an. Dazu gehören Feld Darstellung auf Vorlagen und erlaubte Eingabeformate auf dem admin.

+4

Django 1.2 hat jetzt eine USE_THOUSAND_SEPARATOR-Variable, die Sie in settings.py festlegen können. Siehe http://docs.djangoproject.com/en/dev/ref/settings/?from=olddocs#use-thousand-separator. Dieser Ansatz war wesentlich einfacher als der Einsatz des intcomma-Filters. Sobald ich sowohl USE_L10N als auch USE_THOUSAND_SEPARATOR auf True gesetzt habe, haben die Zahlen, die ich mit Tausenden von Trennzeichen anzeigen wollte, einfach automatisch zu arbeiten begonnen, keine Template-Bearbeitung nötig. Update: diese Methode scheint mit Ints zu arbeiten, aber nicht lange :( – Eddified

+0

Was passiert, wenn 'USE_L10N' funktioniert nicht wie hier http://StackOverflow.com/Questions/7918523/Django-Localization – Sevenearths