如何在integerfield中使用Django intcomma

时间:2018-06-10 09:33:54

标签: python django

我想在我的Django项目中用逗号分隔表单中的数值。 然后我找到了以下文档:

https://docs.djangoproject.com/en/2.0/ref/contrib/humanize/

我以为我可以使用' intcomma'为了我的目的。所以我添加了#34; django.contrib.humanize"到我的INSTALLED_APPS设置。并将{%load humanize%}放入模板中。

当我使用' intcomma'如下所示,它有效。

{{ 999999|intcomma }} # 999,999

但它不适用于下面的整数形式:

{{ form.numbers|intcomma }} # did not work.

代码显示为html而不是像这样的数字:

<input type="number" name="int_sample" value="100000" id="id_int_sample"

我的Django版本是2.0.1。

1 个答案:

答案 0 :(得分:0)

格式化IntegerField

您使用 IntegerField 属性访问.value,因此:

{{ form.numbers.value|intcomma }}

请注意,这是在构造时设置为Form。例如,通过initial={..}或与您传递给字段的instance=...对应的值。例如,如果您在表单中更改了值,则内容将更改。

生成带有数字格式的<input>

如果我们希望<input>元素本身格式化用逗号分隔的数字,我们需要一些HTML / JavaScript。由于Django基本上只渲染一个网页。网页在浏览器中的行为方式并不是Django的责任。

我们可以使用以下方法:

<script language="JavaScript">
function commas(input){
   input.value = Number(input.value).toLocaleString();
}
</script>
{{ form.numbers }}

然后Form应该确保调用commas函数:

SomeForm(forms.Form):
    numbers = forms.IntegerField(
        widget=forms.TextInput(attrs={'onclick':'commas(self)'})
    )