Ответ 1
data-id="{{ form.instance.id|safe }}"
Также выполните задание
Недавно я обновился до Django 1.2.5, и теперь у меня проблемы с локализацией, в частности, форматирование номера. Например, в некоторых шаблонах я печатаю следующие образцы:
data-id="{{ form.instance.id }}"
Что в случаях >= 1000, используется для оценки:
data-id="1235"
Но теперь это фактически приводит к (моя локализация - pt-BR, наш десятичный разделитель - точка):
data-id="1.235"
Что, конечно, не обнаружено, когда я потом запрашиваю базу данных по ID. Использование фильтра |safe
решает проблему, но я не желаю находить все идентификаторы во всех шаблонах и защищать их.
Обычно я локализую только плавающие точки, а не целые числа. Я не хочу отключать L10N, потому что все другое форматирование работает нормально. Есть ли способ сделать это различие в локализации Django? Принимается любое другое решение.
data-id="{{ form.instance.id|safe }}"
Также выполните задание
с django 1.2:
data-id="{{ form.instance.id|stringformat:'d' }}"
или, с django 1.3:
{% load l10n %}
{% localize off %}
data-id="{{ form.instance.id|stringformat:'d' }}"
{% endlocalize %}
или (также с django 1.3):
data-id="{{ form.instance.id|unlocalize }}"
Это не отвечает на ваш вопрос, но ознакомьтесь с этим разделом docs
. В нем говорится использовать фильтр {{ |unlocalize }}
или:
{% localize on %}
{{ value }}
{% endlocalize %}
{% localize off %}
{{ value }}
{% endlocalize %}
Вероятно, лучший способ, но я думаю, что вы можете написать метод, который дает вам идентификатор в виде строки в вашей модели для каждой модели, которую вы пытаетесь отобразить в шаблоне.
class MyModel(models.Model):
pass
def str_id(self):
return u'%s' % self.id
в шаблоне:
{{ form.instance.str_id }}