Подтвердить что ты не робот

Как отключить форматирование для FloatField в шаблоне для Django

Я просто не могу найти окончательного ответа на эту проблему, а django irc требует auth для сервисов... Поэтому мой вопрос: как вы можете принудительно форматировать FloatFields в шаблоне при использовании Django?

Проблема проста: мне нужны простые разделенные точкой такие числа: 42547.34 И я получаю значения, разделенные запятыми...

Вот пример шаблона, в котором возникает проблема:

{% for point in zone.points.all  %}
  {% if forloop.last %}
    new google.maps.LatLng({{point.latitude|floatformat}},{{point.longitude|floatformat}})
  {% else %} 
    new google.maps.LatLng({{point.latitude|floatformat}},{{point.longitude|floatformat}}),
  {% endif %}
{% endfor %}];

Спасибо за ваше время.

P.S. У меня нет этой проблемы при использовании созданных администратором форм, где поплавки отображаются правильно (моя локаль - en_US)

4b9b3361

Ответ 1

{{ float_var|stringformat:"f" }}

Ответ 3

У меня проблема с отображением значений lat и lng. Мое решение было:

{{ value|safe }}

Ответ 4

Вам необходимо создать настраиваемый фильтр шаблонов.

from django.template import Library
from django.utils.numberformat import format

register = Library()

@register.filter
def floatdot(value, decimal_pos=4):
    return format(value, ".", decimal_pos)

floatdot.is_safe = True

Использование:

{{ float_var|floatdot }} или {{ float_var|floatdot:2 }}

Ответ 5

Вы можете использовать пользовательский formats.py (см. Создание файлов пользовательских форматов" в документах Django) и определить THOUSAND_SEPARATOR и DECIMAL_SEPARATOR

THOUSAND_SEPARATOR = ''
DECIMAL_SEPARATOR = '.'

Это глобальный параметр, поэтому он будет влиять на все поплавки, отображаемые на вашем сайте. И вам нужно включить локализацию (USE_L10N в ваших settings.py).

Если у вас есть контроль над шаблоном, вы можете просто удалить фильтр floatformat.

edit. Я не уверен, но, возможно, вы являетесь жертвой этой ошибки Django: # 13617. Попытайтесь включить поддержку выключения локализации в ваших settings.py и посмотреть, исчезли ли ошибочные запятые:

USE_L10N = False

Если это так, взгляните на различные обходные пути, упомянутые в bugreport (самое простое - отключить локализацию, если вам это не понадобится).

Ответ 6

У меня такая же проблема, и, как говорит piquadrat, это раздражающая ошибка, связанная с поддержкой локализации. Меняя USE_L10N = True на False, разрешите это, оно должно быть исправлено в Django 1.3.

Ответ 7

При печати некоторой переменной для javascrip ее лучше ее jsonify. Напишите тег шаблона jsonify, затем используйте

{{value|jsonify}}

Теги шаблона

from django.core.serializers import serialize
from django.db.models.query import QuerySet
import json
from django.template import Library

register = Library()

def jsonify(object):
    if isinstance(object, QuerySet):
        return serialize('json', object)
    return json.dumps(object)

register.filter('jsonify', jsonify)