Sto scrivendo un'app Django da utilizzare in un paese in cui usano la virgola come decimal separator. Ho un modello che contiene un django.db.models.DecimalField
e io uso model forms. Come posso rendere il rendering del campo risultante con virgola e accettare la virgola indietro dall'utente?Crea moduli Django usa la virgola come separatore decimale
Dopo la advice di jweyrich, ho aggiornato la mia domanda da Django 1.1 a Django 1.2 e modificato il mio settings.py
contenere i seguenti:
LANGUAGE_CODE = 'nb'
LANGUAGES = (
('nb', 'Norwegian'),
)
USE_I18N = True
USE_L10N = True
DECIMAL_SEPARATOR = ','
THOUSAND_SEPARATOR = ' '
MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.middleware.common.CommonMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
)
Per quanto posso vedere, questo è tutto ciò che the documentation chiamate per. Ora funziona per i moduli se imposto localization=True
nel campo modulo. Funziona né in model forms né in the admin site, tuttavia.
Ho scoperto uno Django ticket e uno Django changeset risultante da prima della versione 1.2. Se li capisco correttamente, era il caso che i widget usavano automaticamente la localizzazione del formato, ma dopo che questa localizzazione della patch deve essere attivata esplicitamente dando il parametro della parola chiave localization=True
al campo del modulo. C'è un modo per rendere i moduli di amministrazione impostati localization=True
sui loro campi?
Soluzione brillante ed elegante. – scum
Preferirei renderlo un mixin: 'LocalizationMixin (object): ...' e 'FooForm (LocalizationMixin, forms.ModelForm)', così puoi continuare ad usare per es. 'FooForm (LocalizationMixin, floppyforms.ModelForm)' – Webthusiast
Cosa fare se si desidera abilitare la localizzazione direttamente per Modelli? Non ModelForms. Caso di utilizzo: visualizza la risposta a una richiesta HTTP AJAX che registra i dati e desidera archiviare tali dati (contenenti numeri con la virgola come separatore di migliaia) in un modello con un campo Decimale. Non riesci a trovare una soluzione per questo. – jorgeas80