2013-10-24 8 views
10

Sto usando Python 2.6 e Django 1.27Perché Django utilizza una virgola come separatore decimale

mio modello

class Plan(models.Model): 
    price = models.DecimalField(max_digits=5, decimal_places=2,default=0) 
    ..... 

nel mio modello ho

{{plan.price}} 

mio problema è che sul mio macchina locale ottengo il punto usato come separatore per esempio '2.54'
Mentre sulla mia macchina di produzione ottengo '2,54' - la virgola è usata come separatore.
Mi piacerebbe usare il punto ovunque.

nella documentazione Django https://docs.djangoproject.com/en/1.2/ref/settings/#decimal-separator
è dire che c'è l'opzione "DECIMAL_SEPARATOR" il default dot.

btw in entrambe le macchine

In [2]: from django.conf import settings 
In [3]: print settings.DECIMAL_SEPARATOR 
. 

SOLUZIONE:

come @Marcin indicate
impostazione USE_L10N False sulla macchina di produzione.

+0

Il vostro server [svizzero (in tedesco)] (https://docs.djangoproject.com/en/1.6/topics/i18n/formatting/#switzerland-german)? – J0HN

+1

penso che il mio server non abbia nazionalità;), come faccio a controllarlo? \ – yossi

+0

Controllare [quelle impostazioni] (https://docs.djangoproject.com/en/dev/ref/settings/#globalization-i18n-l10n) nel tuo file delle impostazioni di Django. – J0HN

risposta

12

Prima di tutto, presumo che L10N e I18N siano attivati ​​nel tuo settings.py, perché quello è il valore predefinito. La differenza che vedi è probabile perché stai accedendo al sito web da due computer diversi con due diverse impostazioni locali. Django prova a formattare le cose per le impostazioni locali segnalate dal browser.

Tuttavia, è possibile disabilitare questo comportamento. Vedi https://docs.djangoproject.com/en/dev/ref/settings/. Impostare USE_L10N=False e impostare le varie opzioni di separatore specificate nella pagina collegata.

+0

li ho accesi entrambi dallo stesso computer, proverò a impostare USE_L10 su false. – yossi

+0

sì, ha fatto il lavoro. anche se non capisco perché era lo stesso computer e browser .. – yossi

+0

@yossi Forse l'installazione del tuo dev è rotta in modo tale da non poter usare le informazioni L10N (ad esempio, nessuna informazione locale installata). – Marcin