我最近升级到了Django 1.2.5,现在我遇到了本地化问题,特别是数字格式化。例如,在某些模板中,我打印以下示例:
data-id="{{ form.instance.id }}"
在> = 1000的情况下,用于评估:
data-id="1235"
但现在它确实导致了(我的本地化是pt-BR,我们的小数点分隔符是点):
data-id="1.235"
当我以后通过ID查询数据库时,当然找不到。使用|safe
过滤器可以解决问题,但我不愿意在所有模板中找到所有ID并保护它们。
通常,我只会本地化浮点数,而不是整数。我不想禁用L10N,因为所有其他格式都正常工作。 有没有办法在Django本地化中做出这种区分?接受任何其他解决方案。
答案 0 :(得分:10)
data-id="{{ form.instance.id|safe }}"
也做这份工作
答案 1 :(得分:6)
与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 }}"
答案 2 :(得分:0)
这并不能真正回答您的问题,但请查看docs
的此部分。它说使用{{ |unlocalize }}
过滤器或:
{% localize on %}
{{ value }}
{% endlocalize %}
{% localize off %}
{{ value }}
{% endlocalize %}
可能有一种更好的方法,但我认为你可以编写一个方法,在模型中为你试图在模板中显示id的模型中的id作为字符串。
class MyModel(models.Model):
pass
def str_id(self):
return u'%s' % self.id
在你的模板中:
{{ form.instance.str_id }}