Почему django использует запятую как десятичный разделитель - программирование
Подтвердить что ты не робот

Почему django использует запятую как десятичный разделитель

Я использую python 2.6 и django 1.27

моя модель

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

в моем шаблоне я

{{plan.price}}

Моя проблема в том, что на моей локальной машине я получаю точку, используемую как разделитель, например, "2.54"
Пока на моей производственной машине я получаю "2,54" - запятая используется как разделитель.
Я бы хотел, чтобы он повсюду использовал точку.

в django docs https://docs.djangoproject.com/en/1.2/ref/settings/#decimal-separator
он говорит, что есть опция "DECIMAL_SEPARATOR", по умолчанию это точка.

btw в обеих машинах

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

РЕШЕНИЕ:

как отметил Марцин,
установка USE_L10N на False на рабочей машине.

4b9b3361

Ответ 1

Прежде всего, я предполагаю, что у вас есть L10N и I18N в вашем settings.py, потому что это значение по умолчанию. Разница, которую вы видите, вероятно, связана с тем, что вы получаете доступ к веб-сайту с двух разных компьютеров с двумя разными локалями. Django пытается форматировать данные для локали, о которой сообщает браузер.

Однако вы можете отключить это поведение. См. https://docs.djangoproject.com/en/dev/ref/settings/. Установите USE_L10N=False и задайте различные параметры разделителя, указанные на связанной странице.