Estoy escribiendo una aplicación Django para usar en un país donde usan coma como decimal separator. Tengo un modelo que contiene un django.db.models.DecimalField
, y uso model forms. ¿Cómo puedo hacer que el campo de formulario resultante se represente con una coma y acepte la coma del usuario?Hacer que los formularios Django utilicen una coma como separador decimal
Tras la advice de jweyrich, he actualizado mi solicitud de Django 1.1 a Django 1.2 y editado mi settings.py
para contener lo siguiente:
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',
)
Por lo que yo puedo ver, esto es todo lo que the documentation llamadas para. Ahora funciona para formularios si establezco localization=True
en el campo de formulario. Sin embargo, no funciona en model forms ni en the admin site.
Descubrí un Django ticket y un resultado Django changeset antes de la versión 1.2. Si los estoy entendiendo correctamente, solía ocurrir que los widgets utilizaban la localización de formato automáticamente, pero después de esta localización, el parche debe activarse explícitamente dando el parámetro de palabra clave localization=True
al campo de formulario. ¿Hay alguna manera de hacer que los formularios de administrador se establezcan en localization=True
en sus campos?
Solución brillante y elegante. – scum
Preferiría convertirlo en mixin: 'LocalizationMixin (object): ...' y 'FooForm (LocalizationMixin, forms.ModelForm)', para que pueda seguir usando, p. 'FooForm (LocalizationMixin, floppyforms.ModelForm)' – Webthusiast
¿Qué sucede si quiere habilitar la localización directamente para los Modelos? No ModelForms. Caso de uso: Ver la respuesta a una solicitud AJAX de HTTP que publica datos, y desea almacenar esa información (que contiene números con una coma como separador de miles) en un modelo con un campo Decimal. No puedo encontrar una solución para eso. – jorgeas80