2012-11-11 10 views
7

spero che la semplice domanda ottenga una risposta semplice. Vorrei solo per comporre filtri di Django in modo da ottenere formattato numero a virgola mobile locale-aware:Formato numero localizzato in Django?

{{123.45|floatformat:1}} 
"123.5" <= correct 
{{123.45|localize}} 
"123,45" <= correct, in my locales decimal separator is a comma 
{{123.45|floatformat:1|localize}} 
"123.5" <= wrong, point instead of comma. Expected output: "123,5" 

Come posso applicare entrambi i filtri allo stesso tempo?

Grazie.

+0

Puoi mostrarci come sono le impostazioni correlate in 'settings.py', quindi possiamo riprodurlo? – j0ker

risposta

5

filtro di Django floatformat restituisce una stringa, non in realtà un numero float, in modo che quando si passa questo valore a localize, si sta passando una stringa, non un numero (int, float, ecc) e quindi solo restituisce la stringa data.

Per ottenere ciò che si desidera, non è possibile combinare questi due filtri in Django, poiché entrambi restituiscono una stringa. Per farlo, dovresti creare il tuo filtro che farà il comportamento che desideri. Per semplificare le cose, puoi sempre iniziare con il codice nei filtri predefiniti e modificarlo secondo le tue specifiche. Il codice floatformat è here e localize è here.